2021-03-20 14:31:24 +01:00
/ * *
* @ name GameActivityToggle
* @ author DevilBro
* @ authorId 278543574059057154
2021-07-30 13:20:04 +02:00
* @ version 1.0 . 4
2021-03-20 14:31:24 +01:00
* @ 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" ,
2021-07-30 13:20:04 +02:00
"version" : "1.0.4" ,
2021-03-20 14:31:24 +01:00
"description" : "Adds a Quick-Toggle Game Activity Button"
2021-06-21 22:12:49 +02:00
} ,
"changeLog" : {
"improved" : {
2021-07-30 13:20:04 +02:00
"Cached State" : "Now saves the state of your activity status, to avoid the activity status being turned off on each start of discord, this is an issue with Discord btw and not the plugin"
2021-06-21 22:12:49 +02:00
}
2021-03-20 14:31:24 +01:00
}
} ;
2021-09-06 18:58:10 +02:00
return ( window . Lightcord && ! Node . prototype . isPrototypeOf ( window . Lightcord ) || window . LightCord && ! Node . prototype . isPrototypeOf ( window . LightCord ) || window . Astra && ! Node . prototype . isPrototypeOf ( window . Astra ) ) ? class {
2021-06-15 13:42:02 +02:00
getName ( ) { return config . info . name ; }
getAuthor ( ) { return config . info . author ; }
getVersion ( ) { return config . info . version ; }
getDescription ( ) { return "Do not use LightCord!" ; }
load ( ) { BdApi . alert ( "Attention!" , "By using LightCord you are risking your Discord Account, due to using a 3rd Party Client. Switch to an official Discord Client (https://discord.com/) with the proper BD Injection (https://betterdiscord.app/)" ) ; }
start ( ) { }
stop ( ) { }
} : ! window . BDFDB _Global || ( ! window . BDFDB _Global . loaded && ! window . BDFDB _Global . started ) ? class {
2021-03-20 14:31:24 +01:00
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 : _ => {
2021-06-21 22:12:49 +02:00
_this . settings . general [ ! BDFDB . LibraryModules . SettingsStore . showCurrentGame ? "playEnable" : "playDisable" ] && BDFDB . LibraryModules . SoundUtils . playSound ( _this . settings . selections [ ! BDFDB . LibraryModules . SettingsStore . showCurrentGame ? "enableSound" : "disableSound" ] , . 4 ) ;
2021-07-30 13:20:04 +02:00
BDFDB . LibraryModules . SettingsUtils . updateRemoteSettings ( { showCurrentGame : ! BDFDB . LibraryModules . SettingsStore . showCurrentGame } ) ;
2021-03-20 14:31:24 +01:00
}
} ) ) ;
}
} ;
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"
}
} ;
}
2021-07-30 13:20:04 +02:00
onStart ( ) {
let cachedState = BDFDB . DataUtils . load ( this , "cachedState" ) ;
if ( ! cachedState . date || ( new Date ( ) - cachedState . date ) > 1000 * 60 * 60 * 24 * 3 ) {
cachedState . value = BDFDB . LibraryModules . SettingsStore . showCurrentGame ;
cachedState . date = new Date ( ) ;
BDFDB . DataUtils . save ( cachedState , this , "cachedState" ) ;
}
else if ( cachedState . value != null && cachedState . value != BDFDB . LibraryModules . SettingsStore . showCurrentGame ) BDFDB . LibraryModules . SettingsUtils . updateRemoteSettings ( { showCurrentGame : cachedState . value } ) ;
BDFDB . PatchUtils . patch ( this , BDFDB . LibraryModules . SettingsUtils , "updateLocalSettings" , { after : e => {
BDFDB . ReactUtils . forceUpdate ( toggleButton ) ;
BDFDB . DataUtils . save ( { date : new Date ( ) , value : BDFDB . LibraryModules . SettingsStore . showCurrentGame } , this , "cachedState" ) ;
} } ) ;
2021-03-20 14:31:24 +01:00
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" } ) ;
2021-06-18 22:55:21 +02:00
if ( index > - 1 ) {
2021-06-19 11:33:35 +02:00
e . returnvalue . props . className = BDFDB . DOMUtils . formatClassName ( e . returnvalue . props . className , BDFDB . disCN . _gameactivitytoggleadded ) ;
2021-06-18 22:55:21 +02:00
children . unshift ( BDFDB . ReactUtils . createElement ( ActivityToggleComponent , { } ) ) ;
}
2021-03-20 14:31:24 +01:00
}
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 ) ) ;
2021-06-18 22:55:21 +02:00
} ) ( ) ;