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