diff --git a/Plugins/GameActivityToggle/GameActivityToggle.plugin.js b/Plugins/GameActivityToggle/GameActivityToggle.plugin.js
new file mode 100644
index 0000000000..5d204d9bc9
--- /dev/null
+++ b/Plugins/GameActivityToggle/GameActivityToggle.plugin.js
@@ -0,0 +1,297 @@
+/**
+ * @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 = `
The Library Plugin needed for ${config.info.name} is missing.\nPlease click
Download Now to install it.
`;
+ 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,
+ iconSVG: BDFDB.LibraryModules.SettingsStore.showCurrentGame ? `` : ``
+ })),
+ 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(" ")})),
+ value: this.settings.selections[key]
+ }));
+
+ 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));
+})();
\ No newline at end of file
diff --git a/Plugins/GameActivityToggle/README.md b/Plugins/GameActivityToggle/README.md
new file mode 100644
index 0000000000..f28dbe2e3d
--- /dev/null
+++ b/Plugins/GameActivityToggle/README.md
@@ -0,0 +1,12 @@
+# Game Activity Toggle - [![Downlad][download-badge]][download-link] [![Paypal][paypal-badge]][paypal-link] [![Patreon][patreon-badge]][patreon-link]
+
+[download-badge]: https://img.shields.io/badge/Download-Plugin-brightgreen.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAF1SURBVHja7JihTgNBEIb/K1WkBtEEAsESBKEvgEKRAhLHOxAMfQ9cHwEMBoFA1/ACBEGgzbkmUAwI+BENubTs9WZmLz1CZtZd9v7/u9vMZGdAGFabA05Hn3sWrYQwRB9rwafreikbQN5LiV6qhorDARzAARzAARzAARzAARzAARygGOAQ6a+GLr9jmlwpDuJbsxQrER+YYrXaI2D8EZyAEfangj2Fq0NrnBWry8YI5yb7rkRbBrDAK7X9NevlAYCL7Kns79iQKcunOU0+iO0fuSzV1QyUNjkU2b9wS66qm2nt8L3Q/oO7Gk3tWO2InzPtv3isU9RP9jqxmR8LMKsqdPVqFoC8qiDM/HiAcFUQZ34IYDr0VUGW+QEfK8BkVZBmfqkAWVWQZ37JAOA+n/nEtnh/wGd8JWP81Nt0P0r8Wu4ADvAHAOq2fsaP4N8BvFXi/ZoB3FYCcJMNKDbQw9Kc7YdoYfDzB+6xjUuM5mY+wsXYHvgeABIzsPkSOM/lAAAAAElFTkSuQmCC&style=flat
+[download-link]: https://mwittrien.github.io/downloader/?plugin=GameActivityToggle
+
+[paypal-badge]: https://img.shields.io/badge/Paypal-Donate!-%23003087.svg?logo=paypal&style=flat
+[paypal-link]: https://paypal.me/MircoWittrien
+
+[patreon-badge]: https://img.shields.io/badge/Patreon-Support!-%23F96854.svg?logo=patreon&style=flat
+[patreon-link]: https://patreon.com/MircoWittrien
+
+Adds a Quick-Toggle Game Activity Button
diff --git a/Plugins/GameActivityToggle/_res/cover.png b/Plugins/GameActivityToggle/_res/cover.png
new file mode 100644
index 0000000000..aff0983f68
Binary files /dev/null and b/Plugins/GameActivityToggle/_res/cover.png differ
diff --git a/Plugins/PluginRepo/_res/PluginList.txt b/Plugins/PluginRepo/_res/PluginList.txt
index 2487771bc8..6ba2c23712 100644
--- a/Plugins/PluginRepo/_res/PluginList.txt
+++ b/Plugins/PluginRepo/_res/PluginList.txt
@@ -10,7 +10,6 @@ https://raw.githubusercontent.com/Arashiryuu/crap/master/ToastIntegrated/Message
https://raw.githubusercontent.com/Arashiryuu/crap/master/ToastIntegrated/TitleForTitlebar/TitleForTitlebar.plugin.js
https://raw.githubusercontent.com/bepvte/bd-addons/main/plugins/gifsaver.plugin.js
https://raw.githubusercontent.com/Curtis-D/ChannelPopouts/master/ChannelPopouts.plugin.js
-https://raw.githubusercontent.com/Egrodo/DiscordPlugins/master/GameActivityToggle.plugin.js
https://raw.githubusercontent.com/hammy1/BDStuff/master/Plugins/dateViewer/dateViewer.plugin.js
https://raw.githubusercontent.com/Inve1951/BetterDiscordStuff/master/plugins/AvatarHover.plugin.js
https://raw.githubusercontent.com/Inve1951/BetterDiscordStuff/master/plugins/channelHistory.plugin.js
@@ -71,6 +70,7 @@ https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/E
https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/EmojiStatistics/EmojiStatistics.plugin.js
https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/ForceImagePreviews/ForceImagePreviews.plugin.js
https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/FriendNotifications/FriendNotifications.plugin.js
+https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/GameActivityToggle/GameActivityToggle.plugin.js
https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/GoogleSearchReplace/GoogleSearchReplace.plugin.js
https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/GoogleTranslateOption/GoogleTranslateOption.plugin.js
https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/HideMutedCategories/HideMutedCategories.plugin.js
diff --git a/Plugins/README.md b/Plugins/README.md
index fd8c13d47b..04234e5383 100644
--- a/Plugins/README.md
+++ b/Plugins/README.md
@@ -26,6 +26,7 @@
- [Emoji Statistics](https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/EmojiStatistics) - Shows you an Overview of Emojis and Emoji Servers
- [Force Image Previews](https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/ForceImagePreviews) - Forces unrendered embedded Image Previews to render
- [Friend Notifications](https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/FriendNotifications) - Shows a Notification when a Friend or a User, you choose to observe, changes their Status
+ - [Game Activity Toggle](https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/GameActivityToggle) - Adds a Quick-Toggle Game Activity Button
- [Google Search Replace](https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/GoogleSearchReplace) - Replaces the default Google Text Search with a custom Search Engine
- [Google Translate Option](https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/GoogleTranslateOption) - Allows you to translate Messages and your outgoing Message within Discord
- [Hide Muted Categories](https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/HideMutedCategories) - Hides muted Categories, if muted Channels are hidden