2021-03-20 14:31:24 +01:00
/ * *
* @ name GameActivityToggle
* @ author DevilBro
* @ authorId 278543574059057154
* @ version 1.0 . 0
* @ description Adds a Quick - Toggle Game Activity Button
* @ invite Jx3TjNS
* @ donate https : //www.paypal.me/MircoWittrien
* @ patreon https : //www.patreon.com/MircoWittrien
* @ website https : //mwittrien.github.io/
* @ source https : //github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/GameActivityToggle/
* @ updateUrl https : //mwittrien.github.io/BetterDiscordAddons/Plugins/GameActivityToggle/GameActivityToggle.plugin.js
* /
module . exports = ( _ => {
const config = {
"info" : {
"name" : "GameActivityToggle" ,
"author" : "DevilBro" ,
"version" : "1.0.0" ,
"description" : "Adds a Quick-Toggle Game Activity Button"
}
} ;
return ! window . BDFDB _Global || ( ! window . BDFDB _Global . loaded && ! window . BDFDB _Global . started ) ? class {
getName ( ) { return config . info . name ; }
getAuthor ( ) { return config . info . author ; }
getVersion ( ) { return config . info . version ; }
getDescription ( ) { return ` The Library Plugin needed for ${ config . info . name } is missing. Open the Plugin Settings to download it. \n \n ${ config . info . description } ` ; }
downloadLibrary ( ) {
require ( "request" ) . get ( "https://mwittrien.github.io/BetterDiscordAddons/Library/0BDFDB.plugin.js" , ( e , r , b ) => {
if ( ! e && b && r . statusCode == 200 ) require ( "fs" ) . writeFile ( require ( "path" ) . join ( BdApi . Plugins . folder , "0BDFDB.plugin.js" ) , b , _ => BdApi . showToast ( "Finished downloading BDFDB Library" , { type : "success" } ) ) ;
else BdApi . alert ( "Error" , "Could not download BDFDB Library Plugin. Try again later or download it manually from GitHub: https://mwittrien.github.io/downloader/?library" ) ;
} ) ;
}
load ( ) {
if ( ! window . BDFDB _Global || ! Array . isArray ( window . BDFDB _Global . pluginQueue ) ) window . BDFDB _Global = Object . assign ( { } , window . BDFDB _Global , { pluginQueue : [ ] } ) ;
if ( ! window . BDFDB _Global . downloadModal ) {
window . BDFDB _Global . downloadModal = true ;
BdApi . showConfirmationModal ( "Library Missing" , ` The Library Plugin needed for ${ config . info . name } is missing. Please click "Download Now" to install it. ` , {
confirmText : "Download Now" ,
cancelText : "Cancel" ,
onCancel : _ => { delete window . BDFDB _Global . downloadModal ; } ,
onConfirm : _ => {
delete window . BDFDB _Global . downloadModal ;
this . downloadLibrary ( ) ;
}
} ) ;
}
if ( ! window . BDFDB _Global . pluginQueue . includes ( config . info . name ) ) window . BDFDB _Global . pluginQueue . push ( config . info . name ) ;
}
start ( ) { this . load ( ) ; }
stop ( ) { }
getSettingsPanel ( ) {
let template = document . createElement ( "template" ) ;
template . innerHTML = ` <div style="color: var(--header-primary); font-size: 16px; font-weight: 300; white-space: pre; line-height: 22px;">The Library Plugin needed for ${ config . info . name } is missing. \n Please click <a style="font-weight: 500;">Download Now</a> to install it.</div> ` ;
template . content . firstElementChild . querySelector ( "a" ) . addEventListener ( "click" , this . downloadLibrary ) ;
return template . content . firstElementChild ;
}
} : ( ( [ Plugin , BDFDB ] ) => {
var _this ;
var toggleButton ;
const ActivityToggleComponent = class ActivityToggle extends BdApi . React . Component {
componentDidMount ( ) {
toggleButton = this ;
}
render ( ) {
return BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . PanelButton , Object . assign ( { } , this . props , {
tooltipText : BDFDB . LibraryModules . SettingsStore . showCurrentGame ? _this . labels . disable _activity : _this . labels . enable _activity ,
icon : iconProps => BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SvgIcon , Object . assign ( { } , iconProps , {
nativeClass : true ,
2021-05-18 18:13:18 +02:00
width : 20 ,
height : 20 ,
foreground : BDFDB . disCN . accountinfobuttonstrikethrough ,
name : BDFDB . LibraryModules . SettingsStore . showCurrentGame ? BDFDB . LibraryComponents . SvgIcon . Names . GAMEPAD : BDFDB . LibraryComponents . SvgIcon . Names . GAMEPAD _DISABLED
2021-03-20 14:31:24 +01:00
} ) ) ,
onClick : _ => {
_this . settings . general [ ! BDFDB . LibraryModules . SettingsStore . showCurrentGame ? "playEnable" : "playDisable" ] && BDFDB . LibraryModules . SoundUtils . playSound ( _this . settings . selections [ ! BDFDB . LibraryModules . SettingsStore . showCurrentGame ? "enableSound" : "disableSound" ] ) ;
BDFDB . LibraryModules . SettingsUtils . updateRemoteSettings ( { showCurrentGame : ! BDFDB . LibraryModules . SettingsStore . showCurrentGame } )
}
} ) ) ;
}
} ;
var sounds = [ ] ;
return class GameActivityToggle extends Plugin {
onLoad ( ) {
_this = this ;
sounds = [ ( BDFDB . ModuleUtils . findByString ( "undeafen" , "deafen" , "robot_man" , "mute" , false ) || { exports : { keys : ( _ => [ ] ) } } ) . exports . keys ( ) ] . flat ( 10 ) . filter ( n => n ) . map ( s => s . replace ( "./" , "" ) . split ( "." ) [ 0 ] ) . sort ( ) ;
this . defaults = {
general : {
playEnable : { value : true , description : "Play Enable Sound" } ,
playDisable : { value : true , description : "Play Disable Sound" }
} ,
selections : {
enableSound : { value : "stream_started" , description : "Enable Sound" } ,
disableSound : { value : "stream_ended" , description : "Disable Sound" }
}
} ;
this . patchedModules = {
after : {
Account : "render"
}
} ;
}
onStart ( ) {
BDFDB . PatchUtils . patch ( this , BDFDB . LibraryModules . SettingsUtils , "updateLocalSettings" , { after : e => BDFDB . ReactUtils . forceUpdate ( toggleButton ) } ) ;
BDFDB . PatchUtils . forceAllUpdates ( this ) ;
}
onStop ( ) {
BDFDB . PatchUtils . forceAllUpdates ( this ) ;
}
getSettingsPanel ( collapseStates = { } ) {
let settingsPanel ;
return settingsPanel = BDFDB . PluginUtils . createSettingsPanel ( this , {
collapseStates : collapseStates ,
children : _ => {
let settingsItems = [ ] ;
for ( let key in this . defaults . general ) settingsItems . push ( BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SettingsSaveItem , {
type : "Switch" ,
plugin : this ,
keys : [ "general" , key ] ,
label : this . defaults . general [ key ] . description ,
value : this . settings . general [ key ]
} ) ) ;
for ( let key in this . defaults . selections ) settingsItems . push ( BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SettingsSaveItem , {
type : "Select" ,
plugin : this ,
keys : [ "selections" , key ] ,
label : this . defaults . selections [ key ] . description ,
basis : "50%" ,
options : sounds . map ( o => ( { value : o , label : o . split ( /[-_]/g ) . map ( BDFDB . LibraryModules . StringUtils . upperCaseFirstChar ) . join ( " " ) } ) ) ,
2021-03-20 16:11:35 +01:00
value : this . settings . selections [ key ] ,
2021-03-20 16:53:58 +01:00
onChange : value => BDFDB . LibraryModules . SoundUtils . playSound ( value , 0.4 )
2021-03-20 14:31:24 +01:00
} ) ) ;
return settingsItems ;
}
} ) ;
}
processAccount ( e ) {
let [ children , index ] = BDFDB . ReactUtils . findParent ( e . returnvalue , { name : "PanelButton" } ) ;
if ( index > - 1 ) children . unshift ( BDFDB . ReactUtils . createElement ( ActivityToggleComponent , { } ) ) ;
}
setLabelsByLanguage ( ) {
switch ( BDFDB . LanguageUtils . getLanguage ( ) . id ) {
case "bg" : // Bulgarian
return {
disable _activity : "Деактивирайте активността в играта" ,
enable _activity : "Активирайте Game Activity"
} ;
case "da" : // Danish
return {
disable _activity : "Deaktiver spilaktivitet" ,
enable _activity : "Aktivér spilaktivitet"
} ;
case "de" : // German
return {
disable _activity : "Spieleaktivität deaktivieren" ,
enable _activity : "Spieleaktivität aktivieren"
} ;
case "el" : // Greek
return {
disable _activity : "Απενεργοποίηση δραστηριότητας παιχνιδιού" ,
enable _activity : "Ενεργοποίηση δραστηριότητας παιχνιδιού"
} ;
case "es" : // Spanish
return {
disable _activity : "Deshabilitar la actividad del juego" ,
enable _activity : "Habilitar la actividad del juego"
} ;
case "fi" : // Finnish
return {
disable _activity : "Poista pelitoiminto käytöstä" ,
enable _activity : "Ota pelitoiminta käyttöön"
} ;
case "fr" : // French
return {
disable _activity : "Désactiver l'activité de jeu" ,
enable _activity : "Activer l'activité de jeu"
} ;
case "hr" : // Croatian
return {
disable _activity : "Onemogući aktivnost igre" ,
enable _activity : "Omogući aktivnost u igrama"
} ;
case "hu" : // Hungarian
return {
disable _activity : "Tiltsa le a játéktevékenységet" ,
enable _activity : "Engedélyezze a játéktevékenységet"
} ;
case "it" : // Italian
return {
disable _activity : "Disabilita l'attività di gioco" ,
enable _activity : "Abilita attività di gioco"
} ;
case "ja" : // Japanese
return {
disable _activity : "ゲームアクティビティを無効にする" ,
enable _activity : "ゲームアクティビティを有効にする"
} ;
case "ko" : // Korean
return {
disable _activity : "게임 활동 비활성화" ,
enable _activity : "게임 활동 활성화"
} ;
case "lt" : // Lithuanian
return {
disable _activity : "Išjungti žaidimų veiklą" ,
enable _activity : "Įgalinti žaidimų veiklą"
} ;
case "nl" : // Dutch
return {
disable _activity : "Schakel spelactiviteit uit" ,
enable _activity : "Schakel spelactiviteit in"
} ;
case "no" : // Norwegian
return {
disable _activity : "Deaktiver spillaktivitet" ,
enable _activity : "Aktiver spillaktivitet"
} ;
case "pl" : // Polish
return {
disable _activity : "Wyłącz aktywność w grach" ,
enable _activity : "Włącz aktywność w grach"
} ;
case "pt-BR" : // Portuguese (Brazil)
return {
disable _activity : "Desativar atividade de jogo" ,
enable _activity : "Habilitar atividade de jogo"
} ;
case "ro" : // Romanian
return {
disable _activity : "Dezactivați Activitatea jocului" ,
enable _activity : "Activați Activitatea jocului"
} ;
case "ru" : // Russian
return {
disable _activity : "Отключить игровую активность" ,
enable _activity : "Включить игровую активность"
} ;
case "sv" : // Swedish
return {
disable _activity : "Inaktivera spelaktivitet" ,
enable _activity : "Aktivera spelaktivitet"
} ;
case "th" : // Thai
return {
disable _activity : "ปิดการใช้งานกิจกรรมของเกม" ,
enable _activity : "เปิดใช้งานกิจกรรมเกม"
} ;
case "tr" : // Turkish
return {
disable _activity : "Oyun Etkinliğini Devre Dı şı Bı rak" ,
enable _activity : "Oyun Etkinliğini Etkinleştir"
} ;
case "uk" : // Ukrainian
return {
disable _activity : "Вимкнути ігрову активність" ,
enable _activity : "Увімкнути ігрову активність"
} ;
case "vi" : // Vietnamese
return {
disable _activity : "Tắt hoạt động trò chơi" ,
enable _activity : "Bật hoạt động trò chơi"
} ;
case "zh-CN" : // Chinese (China)
return {
disable _activity : "禁用游戏活动" ,
enable _activity : "启用游戏活动"
} ;
case "zh-TW" : // Chinese (Taiwan)
return {
disable _activity : "禁用遊戲活動" ,
enable _activity : "啟用遊戲活動"
} ;
default : // English
return {
disable _activity : "Disable Game Activity" ,
enable _activity : "Enable Game Activity"
} ;
}
}
} ;
} ) ( window . BDFDB _Global . PluginUtils . buildPlugin ( config ) ) ;
} ) ( ) ;