From 3119526904e3e4954d5441fad3ad97a31a102e56 Mon Sep 17 00:00:00 2001 From: Mirco Wittrien Date: Mon, 5 Sep 2022 09:49:30 +0200 Subject: [PATCH] stuff --- Library/0BDFDB.plugin.js | 1 + Library/_res/0BDFDB.data.json | 9 +- Plugins/ShowHiddenChannels/README.md | 28 - .../ShowHiddenChannels.plugin.js | 896 ------------------ Plugins/ShowHiddenChannels/_res/cover.png | Bin 11658 -> 0 bytes .../ShowHiddenChannels/_res/screenshot1.png | Bin 22017 -> 0 bytes .../ShowHiddenChannels/_res/screenshot2.png | Bin 20276 -> 0 bytes .../ShowHiddenChannels/_res/screenshot3.png | Bin 14162 -> 0 bytes _DEAD/ShowHiddenChannels.plugin.js | 70 ++ 9 files changed, 73 insertions(+), 931 deletions(-) delete mode 100644 Plugins/ShowHiddenChannels/README.md delete mode 100644 Plugins/ShowHiddenChannels/ShowHiddenChannels.plugin.js delete mode 100644 Plugins/ShowHiddenChannels/_res/cover.png delete mode 100644 Plugins/ShowHiddenChannels/_res/screenshot1.png delete mode 100644 Plugins/ShowHiddenChannels/_res/screenshot2.png delete mode 100644 Plugins/ShowHiddenChannels/_res/screenshot3.png create mode 100644 _DEAD/ShowHiddenChannels.plugin.js diff --git a/Library/0BDFDB.plugin.js b/Library/0BDFDB.plugin.js index a1b655e186..a3f3834a28 100644 --- a/Library/0BDFDB.plugin.js +++ b/Library/0BDFDB.plugin.js @@ -1185,6 +1185,7 @@ module.exports = (_ => { plugin = plugin == BDFDB && Internal || plugin; if (BDFDB.ObjectUtils.is(plugin)) { if (InternalData.PluginUrlMap && InternalData.PluginUrlMap[plugin.name]) return InternalData.PluginUrlMap[plugin.name]; + else if (plugin.updateUrl) return plugin.updateUrl; else { let name = InternalData.PluginNameMap && InternalData.PluginNameMap[plugin.name] || plugin.name; return `https://mwittrien.github.io/BetterDiscordAddons/Plugins/${name}/${name}.plugin.js`; diff --git a/Library/_res/0BDFDB.data.json b/Library/_res/0BDFDB.data.json index 932ef4a422..b37f7c53f2 100644 --- a/Library/_res/0BDFDB.data.json +++ b/Library/_res/0BDFDB.data.json @@ -1,7 +1,8 @@ { "PluginNameMap": {}, "PluginUrlMap": { - "BDFDB": "https://mwittrien.github.io/BetterDiscordAddons/Library/0BDFDB.plugin.js" + "BDFDB": "https://mwittrien.github.io/BetterDiscordAddons/Library/0BDFDB.plugin.js", + "ShowHiddenChannels": "https://mwittrien.github.io/BetterDiscordAddons/_DEAD/ShowHiddenChannels.plugin.js" }, "LibraryRequires": ["electron", "fs", "path", "process", "request"], "DiscordObjects": { @@ -1095,10 +1096,6 @@ "connections": "connections-pPr4as", "verifiedBadge": "verifiedBadge-mH2YpO" }, - "ShowHiddenChannels": { - "accessModal": "accessModal-w5HjsV", - "hiddenChannel": "hidden-9f2Dsa" - }, "SpotifyControls": { "activityButton": "activityButton-5Fs4Aa", "bar": "bar-g2ZMIm", @@ -1597,8 +1594,6 @@ "_showconnectionsconnections": ["ShowConnections", "connections"], "_showconnectionsicon": ["ShowConnections", "connectionIcon"], "_showconnectionsverifiedbadge": ["ShowConnections", "verifiedBadge"], - "_showhiddenchannelsaccessmodal": ["ShowHiddenChannels", "accessModal"], - "_showhiddenchannelshiddenchannel": ["ShowHiddenChannels", "hiddenChannel"], "_spellcheckerror": ["SpellCheck", "error"], "_spellcheckoverlay": ["SpellCheck", "overlay"], "_spotifycontrolsactivitybutton": ["SpotifyControls", "activityButton"], diff --git a/Plugins/ShowHiddenChannels/README.md b/Plugins/ShowHiddenChannels/README.md deleted file mode 100644 index 2f459cac77..0000000000 --- a/Plugins/ShowHiddenChannels/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Show Hidden Channels [![Download][download-badge]][download-link] [![Support][support-badge]][support-link] [![PayPal][paypal-badge]][paypal-link] [![Patreon][patreon-badge]][patreon-link] - -[download-badge]: https://img.shields.io/badge/Download-%233a71c1.svg?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAgCAYAAAAIXrg4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAd5gAAHeYBMKt3fAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAE9SURBVEiJ7ZQ7TsNAFEWv06IAShOkEDD5UNCwB8RCWEYWAqkIYiEgZQERoqLgFz4hUIaC+tCM4cmyk4mxCyRfaSRL8+49781YI3kKOASmwBtw4OvzFnDJry58fZUlGGvme70IQCaVgBLwXwBADegDp0AjaxjQAAbACVCzG+fmGRgDYYJ5ZGpGCfuh80Ya/EwgqWpqQ0lDoLVE5y1JQ+eNVLUFXfdSWr0A7UUTAG1XazUFuvEudoFJrPAd2EsDuMZeY56PyJM0aqohDljU0Lzz7KSMbMMmJB9px/fStoFH/PWMuS9fyBbw4Bnu/cclQe7nhD8BO5nCDaQJ3CWEj/8cbiAbwI0JvwU2cwk3kDpw7FY91/BShSoAmpKOJK3knP0l6SwAriXt5xwe6SoAPiWtFgSYVST1JM2KCJfU+wadgFl0/0HGbQAAAABJRU5ErkJggg== -[download-link]: https://mwittrien.github.io/downloader/?plugin=ShowHiddenChannels - -[support-badge]: https://img.shields.io/badge/Support-%2343b581.svg?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAC4UlEQVRYR8WXS4jNcRTHP195bEgWkoVsCAspNcVoLGblsaAoFCalBqU8BhuPPDZeQ5LBRmHBYsok7KYor5TyKDI2UiQLZWwojs6d351+85977+93J7q/uqt7Hp/fOed3zvmLzGNm44BWYAUwB5gafm7hc/i9AXqAXkk/c0wrJWRmU4BDwHpgQko+/N8PXAcOS/pSS6cqgJmNBfYBe4HxmY6LYj+AE8BxSb8q2agIEG7dDSwaoeOi2kNgVaVoDAMws7nAHWDaP3JeNvMRWC7pVWx3CEC4+bMM533AE+B5MDYfWADMTEA7RFMciUGAkPPeRNi9svcDnZL+xM7MbBSwCzgG+IupdjwdreWaiAEOAEdqKLrzZknlW1cUNTOPxqMExEFJR91ACSCE/n2i2vdIOpVTF2bWAZysIeuvY4anogxwAdhaQ8FzPjsOu5lNAjYFnSuSvpX1QzreJmqiS9I2hQ73NdFkrknaGDlw5x8iHW880wsQV4ENNS7lOpMdYClwNxHanZLORgBebKcLOrsldUYyO4AzCbvLHOAi0J4QbJd0OTJ+D1iSANgOnEvYveQA94HFCcHvgDv1M7GC80op6AK2JOw+cIB3GQ2kmh1/Oe6oWISjgdfArARAnwM4fb3D5jew0lu2JCs6MbOc8Lvaj5EC9EhygGHHzFqA2yFVqbZRAhhJCtok+TMbPGY2BmgDzie6YKxWSkFOERZvsk7SjehVbA4zwJeXek6pCHOeYdHoWkk3IwCHWVOP5yBbeoY5jahoO6cv5PCUGpGPzlQrLhpL9YUc5wOt2CXNLDWMKhn0ifYSWFieqjleI5mBYRQAvHhS4zi2/wJokdRvZk3A0zohho7jAJFaSGKADkmDw8jMfMtpriMCQxeSAOBreGolK/volrQ66Pm3wqc6umnllSxKRc5S6q34FvA4zPx5mbevvpRGb7pxa3kE4UXZmA+TCKJxn2ZxPhv2cVosqv/1ef4XvUY7+DQzteEAAAAASUVORK5CYII= -[support-link]: https://discord.com/invite/Jx3TjNS - -[paypal-badge]: https://img.shields.io/badge/PayPal-%23003087.svg?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAgCAYAAAABtRhCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAdhwAAHYcBj+XxZQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIZSURBVEiJvZa7a1RREIe/CRsIqBBQJEEUO5+YRgSx0JTBwkKwsBMU/4HY2dmKFmm1tRBREEGFYGMhvgolPlBsRBuJj5iIiRvzWWxuOF7v3r2Ld/ODhXNmhvnOzHnshZzU82rTamqqn9XX6jV1XB3K52wrtaHOV4S104J6Ue2vAtz2n7BUt9S+PCNv2FG5HZ11GDi1mkCA052AO2sG7s63tdcV9gON1BDZQA1gFlhTI3AmIgZTQ1rhlpphAFN5Qwqse/8A7uYNaX/r3j+Am9lAHQbmegmcjIhnyfwosLFXwEXgbM52BBhemdl6hOvSeEpSR9QldTYzDNUE+q2eyZer3lj2rwBHa4A9UA8UwE4kMS+yPexm/xZpPRDTwBvgCXA9Ip4XwEaBicT0MHNMlKz8ijrQxYKynMfVn7lcxzLnZAnwYJegEfV2QZ6P6kDW0rJX5lUHwAZgD7CP1l3b2yb0XETMow6WVDedS35Bfbf8+2LrqFfRVVt/DqDuLwm8nwM+qghIdcnk+6aP8hO60s7lFW4va2+iReAOcCgiTkZEM3M0OgBfJuNNwLqCmHvAY+AbMAO8BZ5GxNeihA2qH5iiuO/AWET8Ksnxl/o6ANMKizox1Q0sA65t45sDPiTzov0rvTJFagC7gM0FvoWIMJkXVdg1sLLUTwVHfqxXsPVt7tjWbnP98+3fRkXt/AG8Xy3gEnA5Ipa6Bf4BbzmPtw84RMAAAAAASUVORK5CYII= -[paypal-link]: https://paypal.me/MircoWittrien - -[patreon-badge]: https://img.shields.io/badge/Patreon-%23F96854.svg?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAdhwAAHYcBj+XxZQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGBSURBVFiF7Za9ThtBFEbPBUpERWMwCorfJjY4aVLxBFHCKyCl4hWQUqVMBULmbfiRCNACqSJsDsXakjHGO8Y7ovFXrmbmO3NnZ74bqrzUeUR8HPP9mdQ60AZawCZQBwK4BC6ADnAUEZeTFhmnsxLjdfVAfXhl/rB66h/1QyUAalu9TzAe1Z26NROAutvf0VvVU7+/CUD9PKP5MMT2VADqhvqvAvOB7tQ1gIXXznpEP4HlxLEpWgH2AEInX0OLv/cUWKwQAKALbKZU4EsGc4AloJ0C8CmD+UDNFIBGRoBGCkAtI8B66i3IpccUgJuMANcpAKcZAc5SAE4yAnRSAA6BXgbzLnBUChARF8DvDAC/IuIqNYzqFYfRrVqDxDCKiL/AV6o5ikdgJyJuBrsrrcBQJX44W0/QVb+NLpoM0B/f6pdwWt2qL3NlWoD+nFV1X/2fYPxg0cCOfdJL+4ESkBqwDTQpQmuNoi2/onjAOsBxRFxPWmTqClSp9w6jOcAcYA7AE1OMk5ulhBZCAAAAAElFTkSuQmCC -[patreon-link]: https://patreon.com/MircoWittrien - -Displays all hidden Channels, which can't be accessed due to Role Restrictions, this won't allow you to read them (impossible) - - -Hidden Channels: - -![cover](https://mwittrien.github.io/BetterDiscordAddons/Plugins/ShowHiddenChannels/_res/cover.png) - -Channels Details Overview: - -![screenshot1](https://mwittrien.github.io/BetterDiscordAddons/Plugins/ShowHiddenChannels/_res/screenshot1.png) - -![screenshot2](https://mwittrien.github.io/BetterDiscordAddons/Plugins/ShowHiddenChannels/_res/screenshot2.png) - -![screenshot3](https://mwittrien.github.io/BetterDiscordAddons/Plugins/ShowHiddenChannels/_res/screenshot3.png) \ No newline at end of file diff --git a/Plugins/ShowHiddenChannels/ShowHiddenChannels.plugin.js b/Plugins/ShowHiddenChannels/ShowHiddenChannels.plugin.js deleted file mode 100644 index 33ec18d7d2..0000000000 --- a/Plugins/ShowHiddenChannels/ShowHiddenChannels.plugin.js +++ /dev/null @@ -1,896 +0,0 @@ -/** - * @name ShowHiddenChannels - * @author DevilBro - * @authorId 278543574059057154 - * @version 3.2.5 - * @description Displays all hidden Channels, which can't be accessed due to Role Restrictions, this won't allow you to read them (impossible) - * @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/ShowHiddenChannels/ - * @updateUrl https://mwittrien.github.io/BetterDiscordAddons/Plugins/ShowHiddenChannels/ShowHiddenChannels.plugin.js - */ - -module.exports = (_ => { - const changeLog = { - - }; - - return !window.BDFDB_Global || (!window.BDFDB_Global.loaded && !window.BDFDB_Global.started) ? class { - constructor (meta) {for (let key in meta) this[key] = meta[key];} - getName () {return this.name;} - getAuthor () {return this.author;} - getVersion () {return this.version;} - getDescription () {return `The Library Plugin needed for ${this.name} is missing. Open the Plugin Settings to download it. \n\n${this.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 ${this.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(this.name)) window.BDFDB_Global.pluginQueue.push(this.name); - } - start () {this.load();} - stop () {} - getSettingsPanel () { - let template = document.createElement("template"); - template.innerHTML = `
The Library Plugin needed for ${this.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 blackList = [], overrideTypes = []; - var hiddenChannelCache = {}; - var accessModal; - - const channelGroupMap = { - GUILD_TEXT: "SELECTABLE", - GUILD_VOICE: "VOCAL", - GUILD_ANNOUNCEMENT: "SELECTABLE", - GUILD_STORE: "SELECTABLE", - GUILD_STAGE_VOICE: "VOCAL" - }; - - const typeNameMap = { - GUILD_TEXT: "TEXT_CHANNEL", - GUILD_VOICE: "VOICE_CHANNEL", - GUILD_ANNOUNCEMENT: "NEWS_CHANNEL", - GUILD_STORE: "STORE_CHANNEL", - GUILD_CATEGORY: "CATEGORY", - GUILD_STAGE_VOICE: "STAGE_CHANNEL", - PUBLIC_THREAD: "THREAD", - PRIVATE_THREAD: "PRIVATE_THREAD" - }; - - const renderLevels = { - CAN_NOT_SHOW: 1, - DO_NOT_SHOW: 2, - WOULD_SHOW_IF_UNCOLLAPSED: 3, - SHOW: 4 - }; - - const sortOrders = { - NATIVE: {value: "native", label: "Native Category in correct Order"}, - BOTTOM: {value: "bottom", label: "Native Category at the bottom"} - }; - - const UserRowComponent = class UserRow extends BdApi.React.Component { - componentDidMount() { - if (this.props.user.fetchable) { - this.props.user.fetchable = false; - BDFDB.LibraryModules.UserProfileUtils.getUser(this.props.user.id).then(fetchedUser => { - this.props.user = Object.assign({}, fetchedUser, BDFDB.LibraryModules.MemberStore.getMember(this.props.guildId, this.props.user.id) || {}); - BDFDB.ReactUtils.forceUpdate(this); - }); - } - } - render() { - return BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ListRow, { - prefix: BDFDB.ReactUtils.createElement("div", { - className: BDFDB.disCN.listavatar, - children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.AvatarComponents.default, { - src: BDFDB.UserUtils.getAvatar(this.props.user.id), - status: BDFDB.UserUtils.getStatus(this.props.user.id), - size: BDFDB.LibraryComponents.AvatarComponents.Sizes.SIZE_40, - onClick: _ => { - if (accessModal) accessModal.props.onClose(); - BDFDB.LibraryModules.UserProfileModalUtils.openUserProfileModal({ - userId: this.props.user.id, - guildId: this.props.guildId - }); - } - }) - }), - labelClassName: BDFDB.disCN.nametag, - label: [ - BDFDB.ReactUtils.createElement("span", { - className: BDFDB.disCN.username, - children: this.props.user.nick || this.props.user.username, - style: {color: this.props.user.colorString} - }), - !this.props.user.discriminator ? null : BDFDB.ReactUtils.createElement("span", { - className: BDFDB.disCN.listdiscriminator, - children: `#${this.props.user.discriminator}` - }), - this.props.user.bot && BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.BotTag, { - style: {marginLeft: 6} - }) - ] - }); - } - }; - - const RoleRowComponent = class RoleRow extends BdApi.React.Component { - render() { - return BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ListRow, { - prefix: BDFDB.ReactUtils.createElement("div", { - className: BDFDB.disCNS.avataricon + BDFDB.disCNS.listavatar + BDFDB.disCNS.avatariconsizemedium + BDFDB.disCN.avatariconinactive, - style: { - boxSizing: "border-box", - padding: 10 - }, - children: BDFDB.ReactUtils.createElement("div", { - style: { - borderRadius: "50%", - height: "100%", - width: "100%", - backgroundColor: BDFDB.ColorUtils.convert(this.props.role.colorString, "RGB") || BDFDB.DiscordConstants.Colors.PRIMARY_DARK_300 - } - }) - }), - labelClassName: this.props.role.overwritten && BDFDB.disCN.strikethrough, - label: BDFDB.ReactUtils.createElement("span", { - children: this.props.role.name, - style: {color: this.props.role.colorString} - }) - }); - } - }; - - return class ShowHiddenChannels extends Plugin { - onLoad () { - overrideTypes = Object.keys(BDFDB.DiscordConstants.PermissionOverrideType); - - this.defaults = { - sortOrder: { - hidden: { - value: sortOrders[Object.keys(sortOrders)[0]].value, - description: "Sorts hidden Channels in", - options: Object.keys(sortOrders).map(n => sortOrders[n]) - } - }, - general: { - showVoiceUsers: {value: true, description: "Show connected Users in hidden Voice Channels"}, - showForNormal: {value: true, description: "Add Access-Overview ContextMenu Entry for non-hidden Channels"} - }, - channels: { - GUILD_CATEGORY: {value: true}, - GUILD_TEXT: {value: true}, - GUILD_VOICE: {value: true}, - GUILD_ANNOUNCEMENT: {value: true}, - GUILD_STORE: {value: true}, - GUILD_STAGE_VOICE: {value: true} - } - }; - - this.patchedModules = { - before: { - Channels: "render", - ChannelCategoryItem: "type", - ChannelItem: "default", - VoiceUsers: "render" - }, - after: { - useInviteItem: "default", - ChannelItem: "default" - } - }; - - this.css = ` - ${BDFDB.dotCNS._showhiddenchannelsaccessmodal + BDFDB.dotCN.messagespopoutemptyplaceholder} { - position: absolute; - bottom: 0; - width: 100%; - } - `; - } - - onStart () { - this.saveBlackList(this.getBlackList()); - - BDFDB.PatchUtils.patch(this, BDFDB.LibraryModules.GuildUtils, "setChannel", {instead: e => { - let channelId = (BDFDB.LibraryModules.VoiceUtils.getVoiceStateForUser(e.methodArguments[1]) || {}).channelId; - if (!channelId || !this.isChannelHidden(channelId)) return e.callOriginalMethod(); - }}); - - BDFDB.PatchUtils.patch(this, BDFDB.LibraryModules.UnreadChannelUtils, "hasUnread", {after: e => { - return e.returnValue && !this.isChannelHidden(e.methodArguments[0]); - }}); - - BDFDB.PatchUtils.patch(this, BDFDB.LibraryModules.UnreadChannelUtils, "getMentionCount", {after: e => { - return e.returnValue ? (this.isChannelHidden(e.methodArguments[0]) ? 0 : e.returnValue) : e.returnValue; - }}); - - this.forceUpdateAll(); - } - - onStop () { - this.forceUpdateAll(); - } - - getSettingsPanel (collapseStates = {}) { - let settingsPanel; - return settingsPanel = BDFDB.PluginUtils.createSettingsPanel(this, { - collapseStates: collapseStates, - children: _ => { - let settingsItems = []; - - for (let key in this.defaults.selections) settingsItems.push(); - - settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.CollapseContainer, { - title: "Settings", - collapseStates: collapseStates, - children: Object.keys(this.defaults.sortOrder).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, { - type: "Select", - plugin: this, - keys: ["sortOrder", key], - label: this.defaults.sortOrder[key].description, - basis: "50%", - options: this.defaults.sortOrder[key].options, - value: this.settings.sortOrder[key] - })).concat(Object.keys(this.defaults.general).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, { - type: "Switch", - plugin: this, - keys: ["general", key], - label: this.defaults.general[key].description, - value: this.settings.general[key] - }))).concat(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, { - title: "Show Channels:", - children: Object.keys(this.defaults.channels).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, { - type: "Switch", - plugin: this, - keys: ["channels", key], - label: BDFDB.LanguageUtils.LanguageStrings[typeNameMap[key]], - value: this.settings.channels[key] - })) - })) - })); - - settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.CollapseContainer, { - title: "Server Black List", - collapseStates: collapseStates, - children: [ - BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsGuildList, { - className: BDFDB.disCN.marginbottom20, - disabled: blackList, - onClick: disabledGuilds => this.saveBlackList(disabledGuilds) - }), - BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, { - type: "Button", - color: BDFDB.LibraryComponents.Button.Colors.GREEN, - label: "Enable for all Servers", - onClick: _ => this.batchSetGuilds(settingsPanel, collapseStates, true), - children: BDFDB.LanguageUtils.LanguageStrings.ENABLE - }), - BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, { - type: "Button", - color: BDFDB.LibraryComponents.Button.Colors.PRIMARY, - label: "Disable for all Servers", - onClick: _ => this.batchSetGuilds(settingsPanel, collapseStates, false), - children: BDFDB.LanguageUtils.LanguageStrings.DISABLE - }) - ] - })); - - return settingsItems; - } - }); - } - - onSettingsClosed () { - if (this.SettingsUpdated) { - delete this.SettingsUpdated; - this.forceUpdateAll(); - } - } - - forceUpdateAll () { - hiddenChannelCache = {}; - - BDFDB.PatchUtils.forceAllUpdates(this); - BDFDB.ChannelUtils.rerenderAll(); - } - - onUserContextMenu (e) { - if (e.subType == "useUserManagementItems" || e.subType == "useMoveUserVoiceItems" || e.subType == "usePreviewVideoItem") { - let channelId = (BDFDB.LibraryModules.VoiceUtils.getVoiceStateForUser(e.instance.props.user.id) || {}).channelId; - if (channelId && this.isChannelHidden(channelId)) return null; - } - } - - onChannelContextMenu (e) { - if (e.instance.props.channel && e.instance.props.channel.guild_id && e.subType == "useChannelMarkAsReadItem") { - let isHidden = this.isChannelHidden(e.instance.props.channel.id); - if (isHidden || this.settings.general.showForNormal) { - if (e.returnvalue.length) e.returnvalue.push(BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuSeparator, {})); - e.returnvalue.push(BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, { - label: this.labels.context_channelaccess, - id: BDFDB.ContextMenuUtils.createItemId(this.name, "permissions"), - action: _ => this.openAccessModal(e.instance.props.channel, !isHidden) - })); - } - } - } - - onGuildContextMenu (e) { - if (e.instance.props.guild) { - let [children, index] = BDFDB.ContextMenuUtils.findItem(e.returnvalue, {id: "hide-muted-channels"}); - if (index > -1) children.splice(index + 1, 0, BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuCheckboxItem, { - label: this.labels.context_hidehidden, - id: BDFDB.ContextMenuUtils.createItemId(this.name, "hide-locked-channels"), - checked: blackList.includes(e.instance.props.guild.id), - action: value => { - if (value) blackList.push(e.instance.props.guild.id); - else BDFDB.ArrayUtils.remove(blackList, e.instance.props.guild.id, true); - this.saveBlackList(BDFDB.ArrayUtils.removeCopies(blackList)); - - BDFDB.PatchUtils.forceAllUpdates(this); - BDFDB.ChannelUtils.rerenderAll(true); - } - })); - } - } - - onGuildHeaderContextMenu (e) { - this.onGuildContextMenu(e); - } - - processUseInviteItem (e) { - if (e.instance.props.channel && this.isChannelHidden(e.instance.props.channel.id)) return null; - } - - processChannels (e) { - if (!e.instance.props.guild || e.instance.props.guild.id.length < 16) return; - let show = !blackList.includes(e.instance.props.guild.id), sortAtBottom = this.settings.sortOrder.hidden == sortOrders.BOTTOM.value; - e.instance.props.guildChannels = new e.instance.props.guildChannels.constructor(e.instance.props.guildChannels.id, e.instance.props.guildChannels.hoistedSection.hoistedRows); - e.instance.props.guildChannels.categories = Object.assign({}, e.instance.props.guildChannels.categories); - hiddenChannelCache[e.instance.props.guild.id] = []; - let processCategory = (category, insertChannelless) => { - if (!category) return; - let channelArray = BDFDB.ObjectUtils.toArray(category.channels); - if (channelArray.length) { - for (let n of channelArray) if ((n.renderLevel == renderLevels.CAN_NOT_SHOW || n._hidden) && e.instance.props.selectedVoiceChannelId != n.record.id) { - if (show && (this.settings.channels[BDFDB.DiscordConstants.ChannelTypes[n.record.type]] || this.settings.channels[BDFDB.DiscordConstants.ChannelTypes[n.record.type]] === undefined)) { - n._hidden = true; - if (e.instance.props.guildChannels.hideMutedChannels && e.instance.props.guildChannels.mutedChannelIds.has(n.record.id)) n.renderLevel = renderLevels.DO_NOT_SHOW; - else if (category.isCollapsed) n.renderLevel = renderLevels.WOULD_SHOW_IF_UNCOLLAPSED; - else n.renderLevel = renderLevels.SHOW; - } - else { - delete n._hidden; - n.renderLevel = renderLevels.CAN_NOT_SHOW; - } - - if (hiddenChannelCache[e.instance.props.guild.id].indexOf(n.record.id) == -1) hiddenChannelCache[e.instance.props.guild.id].push(n.record.id); - } - category.shownChannelIds = channelArray.filter(n => n.renderLevel == renderLevels.SHOW).sort((x, y) => { - let xPos = x.record.position + (x.record.isGuildVocal() ? 1e4 : 0) + (sortAtBottom && x._hidden ? 1e5 : 0); - let yPos = y.record.position + (y.record.isGuildVocal() ? 1e4 : 0) + (sortAtBottom && y._hidden ? 1e5 : 0); - return xPos < yPos ? -1 : xPos > yPos ? 1 : 0; - }).map(n => n.id); - } - else if (insertChannelless && !category.shouldShowEmptyCategory()) { - let shouldShowEmptyCategory = category.shouldShowEmptyCategory; - category.shouldShowEmptyCategory = BDFDB.TimeUtils.suppress((...args) => { - if (!this.started) { - category.shouldShowEmptyCategory = shouldShowEmptyCategory; - return false; - } - else return this.settings.channels.GUILD_CATEGORY && !blackList.includes(e.instance.props.guild.id); - }, "Error in shouldShowEmptyCategory of Category Object!"); - } - }; - processCategory(e.instance.props.guildChannels.favoritesCategory); - processCategory(e.instance.props.guildChannels.recentsCategory); - processCategory(e.instance.props.guildChannels.noParentCategory); - for (let id in e.instance.props.guildChannels.categories) processCategory(e.instance.props.guildChannels.categories[id], true); - } - - processChannelItem (e) { - if (e.instance.props.channel && this.isChannelHidden(e.instance.props.channel.id)) { - if (!e.returnvalue) e.instance.props.className = BDFDB.DOMUtils.formatClassName(e.instance.props.className, BDFDB.disCN._showhiddenchannelshiddenchannel); - else { - let [children, index] = BDFDB.ReactUtils.findParent(e.returnvalue, {name: "ChannelItemIcon"}); - let channelChildren = BDFDB.ReactUtils.findChild(e.returnvalue, {props: [["className", BDFDB.disCN.channelchildren]]}); - if (channelChildren && channelChildren.props && channelChildren.props.children) { - channelChildren.props.children = [BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, { - text: BDFDB.LanguageUtils.LanguageStrings.CHANNEL_LOCKED_SHORT, - children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, { - className: BDFDB.disCN.channeliconitem, - style: {display: "block"}, - children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, { - className: BDFDB.disCN.channelactionicon, - name: BDFDB.LibraryComponents.SvgIcon.Names.LOCK_CLOSED - }) - }) - })]; - } - if (!(e.instance.props.channel.type == BDFDB.DiscordConstants.ChannelTypes.GUILD_VOICE && e.instance.props.connected)) { - let wrapper = BDFDB.ReactUtils.findChild(e.returnvalue, {props: [["className", BDFDB.disCN.channelwrapper]]}); - if (wrapper) { - wrapper.props.onMouseDown = event => BDFDB.ListenerUtils.stopEvent(event); - wrapper.props.onMouseUp = event => BDFDB.ListenerUtils.stopEvent(event); - } - let mainContent = BDFDB.ReactUtils.findChild(e.returnvalue, {props: [["className", BDFDB.disCN.channelmaincontent]]}); - if (mainContent) { - mainContent.props.onClick = event => BDFDB.ListenerUtils.stopEvent(event); - mainContent.props.href = null; - } - } - } - } - } - - processVoiceUsers (e) { - if (!this.settings.general.showVoiceUsers && this.isChannelHidden(e.instance.props.channel.id)) e.instance.props.voiceStates = []; - } - - isChannelHidden (channelId) { - let channel = BDFDB.LibraryModules.ChannelStore.getChannel(channelId); - if (!channel || !channel.guild_id) return false; - return hiddenChannelCache[channel.guild_id] && hiddenChannelCache[channel.guild_id].indexOf(channelId) > -1; - } - - batchSetGuilds (settingsPanel, collapseStates, value) { - if (!value) { - for (let id of BDFDB.LibraryModules.FolderStore.getFlattenedGuildIds()) blackList.push(id); - this.saveBlackList(BDFDB.ArrayUtils.removeCopies(blackList)); - } - else this.saveBlackList([]); - BDFDB.PluginUtils.refreshSettingsPanel(this, settingsPanel, collapseStates); - } - - getBlackList () { - let loadedBlackList = BDFDB.DataUtils.load(this, "blacklist"); - return !BDFDB.ArrayUtils.is(loadedBlackList) ? [] : loadedBlackList; - - } - - saveBlackList (savedBlackList) { - blackList = savedBlackList; - BDFDB.DataUtils.save(savedBlackList, this, "blacklist"); - } - - openAccessModal (channel, allowed) { - let isThread = BDFDB.ChannelUtils.isThread(channel); - let guild = BDFDB.LibraryModules.GuildStore.getGuild(channel.guild_id); - let myMember = guild && BDFDB.LibraryModules.MemberStore.getMember(guild.id, BDFDB.UserUtils.me.id); - - let parentChannel = isThread && BDFDB.LibraryModules.ChannelStore.getChannel(BDFDB.LibraryModules.ChannelStore.getChannel(channel.id).parent_id); - let category = parentChannel && parentChannel.parent_id && BDFDB.LibraryModules.ChannelStore.getChannel(parentChannel.parent_id) || BDFDB.LibraryModules.ChannelStore.getChannel(BDFDB.LibraryModules.ChannelStore.getChannel(channel.id).parent_id); - - let lightTheme = BDFDB.DiscordUtils.getTheme() == BDFDB.disCN.themelight; - - let addUser = (id, users) => { - let user = BDFDB.LibraryModules.UserStore.getUser(id); - if (user) users.push(Object.assign({}, user, BDFDB.LibraryModules.MemberStore.getMember(guild.id, id) || {})); - else users.push({id: id, username: `UserId: ${id}`, fetchable: true}); - }; - let checkAllowPerm = permString => { - return (permString | BDFDB.DiscordConstants.Permissions.VIEW_CHANNEL) == permString && (channel.type != BDFDB.DiscordConstants.ChannelTypes.GUILD_VOICE || (permString | BDFDB.DiscordConstants.Permissions.CONNECT) == permString); - }; - let checkDenyPerm = permString => { - return (permString | BDFDB.DiscordConstants.Permissions.VIEW_CHANNEL) == permString || (channel.type == BDFDB.DiscordConstants.ChannelTypes.GUILD_VOICE && (permString | BDFDB.DiscordConstants.Permissions.CONNECT) == permString); - }; - - let allowedRoles = [], allowedUsers = [], deniedRoles = [], deniedUsers = [], everyoneDenied = false; - for (let id in channel.permissionOverwrites) { - if ((channel.permissionOverwrites[id].type == BDFDB.DiscordConstants.PermissionOverrideType.ROLE || overrideTypes[channel.permissionOverwrites[id].type] == BDFDB.DiscordConstants.PermissionOverrideType.ROLE) && (guild.roles[id] && guild.roles[id].name != "@everyone") && checkAllowPerm(channel.permissionOverwrites[id].allow)) { - allowedRoles.push(Object.assign({overwritten: myMember && myMember.roles.includes(id) && !allowed}, guild.roles[id])); - } - else if ((channel.permissionOverwrites[id].type == BDFDB.DiscordConstants.PermissionOverrideType.MEMBER || overrideTypes[channel.permissionOverwrites[id].type] == BDFDB.DiscordConstants.PermissionOverrideType.MEMBER) && checkAllowPerm(channel.permissionOverwrites[id].allow)) { - addUser(id, allowedUsers); - } - if ((channel.permissionOverwrites[id].type == BDFDB.DiscordConstants.PermissionOverrideType.ROLE || overrideTypes[channel.permissionOverwrites[id].type] == BDFDB.DiscordConstants.PermissionOverrideType.ROLE) && checkDenyPerm(channel.permissionOverwrites[id].deny)) { - deniedRoles.push(guild.roles[id]); - if (guild.roles[id] && guild.roles[id].name == "@everyone") everyoneDenied = true; - } - else if ((channel.permissionOverwrites[id].type == BDFDB.DiscordConstants.PermissionOverrideType.MEMBER || overrideTypes[channel.permissionOverwrites[id].type] == BDFDB.DiscordConstants.PermissionOverrideType.MEMBER) && checkDenyPerm(channel.permissionOverwrites[id].deny)) { - addUser(id, deniedUsers); - } - } - - if (![].concat(allowedUsers, deniedUsers).find(user => user.id == guild.ownerId)) addUser(guild.ownerId, allowedUsers); - for (let id in guild.roles) if ((guild.roles[id].permissions | BDFDB.DiscordConstants.Permissions.ADMINISTRATOR) == guild.roles[id].permissions && ![].concat(allowedRoles, deniedRoles).find(role => role.id == id)) allowedRoles.push(Object.assign({overwritten: myMember && myMember.roles.includes(id) && !allowed}, guild.roles[id])); - if (allowed && !everyoneDenied) allowedRoles.push({name: "@everyone"}); - - let allowedElements = [], deniedElements = []; - for (let role of allowedRoles) allowedElements.push(BDFDB.ReactUtils.createElement(RoleRowComponent, {role: role, guildId: guild.id, channelId: channel.id})); - for (let user of allowedUsers) allowedElements.push(BDFDB.ReactUtils.createElement(UserRowComponent, {user: user, guildId: guild.id, channelId: channel.id})); - for (let role of deniedRoles) deniedElements.push(BDFDB.ReactUtils.createElement(RoleRowComponent, {role: role, guildId: guild.id, channelId: channel.id})); - for (let user of deniedUsers) deniedElements.push(BDFDB.ReactUtils.createElement(UserRowComponent, {user: user, guildId: guild.id, channelId: channel.id})); - - const infoStrings = [ - isThread && { - title: BDFDB.LanguageUtils.LanguageStrings.THREAD_NAME, - text: channel.name - }, !isThread && { - title: BDFDB.LanguageUtils.LanguageStrings.FORM_LABEL_CHANNEL_NAME, - text: channel.name - }, channel.type == BDFDB.DiscordConstants.ChannelTypes.GUILD_VOICE ? { - title: BDFDB.LanguageUtils.LanguageStrings.FORM_LABEL_BITRATE, - text: channel.bitrate || "---" - } : { - title: BDFDB.LanguageUtils.LanguageStrings.FORM_LABEL_CHANNEL_TOPIC, - text: BDFDB.ReactUtils.markdownParse(channel.topic || "---") - }, { - title: BDFDB.LanguageUtils.LanguageStrings.CHANNEL_TYPE, - text: BDFDB.LanguageUtils.LanguageStrings[typeNameMap[BDFDB.DiscordConstants.ChannelTypes[channel.type]]] - }, isThread && parentChannel && { - title: BDFDB.LanguageUtils.LanguageStrings.FORM_LABEL_CHANNEL_NAME, - text: parentChannel.name - }, { - title: BDFDB.LanguageUtils.LanguageStrings.CATEGORY_NAME, - text: category && category.name || BDFDB.LanguageUtils.LanguageStrings.NO_CATEGORY - } - ].map((formLabel, i) => formLabel && [ - i == 0 ? null : BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormDivider, { - className: BDFDB.disCN.marginbottom20 - }), - BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormItem, { - title: `${formLabel.title}:`, - className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.marginbottom20, i == 0 && BDFDB.disCN.margintop8), - children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormText, { - className: BDFDB.disCN.marginleft8, - children: formLabel.text - }) - }) - ]).flat(10).filter(n => n); - - BDFDB.ModalUtils.open(this, { - size: "MEDIUM", - header: BDFDB.LanguageUtils.LanguageStrings.CHANNEL + " " + BDFDB.LanguageUtils.LanguageStrings.ACCESSIBILITY, - subHeader: "#" + channel.name, - className: BDFDB.disCN._showhiddenchannelsaccessmodal, - contentClassName: BDFDB.DOMUtils.formatClassName(!isThread && BDFDB.disCN.listscroller), - onOpen: modalInstance => {if (modalInstance) accessModal = modalInstance;}, - children: isThread ? infoStrings : [ - BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalComponents.ModalTabContent, { - className: BDFDB.disCN.modalsubinner, - tab: BDFDB.LanguageUtils.LanguageStrings.OVERLAY_SETTINGS_GENERAL_TAB, - children: infoStrings - }), - BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalComponents.ModalTabContent, { - tab: this.labels.modal_allowed, - children: allowedElements.length ? allowedElements : - BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.MessagesPopoutComponents.EmptyStateBottom, { - msg: BDFDB.LanguageUtils.LanguageStrings.AUTOCOMPLETE_NO_RESULTS_HEADER, - image: lightTheme ? "/assets/9b0d90147f7fab54f00dd193fe7f85cd.svg" : "/assets/308e587f3a68412f137f7317206e92c2.svg" - }) - }), - BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ModalComponents.ModalTabContent, { - tab: this.labels.modal_denied, - children: deniedElements.length ? deniedElements : - BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.MessagesPopoutComponents.EmptyStateBottom, { - msg: BDFDB.LanguageUtils.LanguageStrings.AUTOCOMPLETE_NO_RESULTS_HEADER, - image: lightTheme ? "/assets/9b0d90147f7fab54f00dd193fe7f85cd.svg" : "/assets/308e587f3a68412f137f7317206e92c2.svg" - }) - }) - ] - }); - } - - setLabelsByLanguage () { - switch (BDFDB.LanguageUtils.getLanguage().id) { - case "bg": // Bulgarian - return { - context_changeorder: "Промяна на реда на скритите канали", - context_changeorder_bottom: "Родна категория в долната част", - context_changeorder_native: "Родна категория в правилен ред", - context_channelaccess: "Достъп до канал", - context_hidehidden: "Скриване на заключените канали", - modal_allowed: "Разрешено", - modal_denied: "Отрича се" - }; - case "cs": // Czech - return { - context_changeorder: "Změnit pořadí skrytých kanálů", - context_changeorder_bottom: "Nativní kategorie dole", - context_changeorder_native: "Nativní kategorie ve správném pořadí", - context_channelaccess: "Přístup ke kanálu", - context_hidehidden: "Skrýt zamčené kanály", - modal_allowed: "Povoleno", - modal_denied: "Odepřeno" - }; - case "da": // Danish - return { - context_changeorder: "Skift rækkefølge for skjulte kanaler", - context_changeorder_bottom: "Indfødt kategori i bunden", - context_changeorder_native: "Native Kategori i korrekt rækkefølge", - context_channelaccess: "Kanaltilgang", - context_hidehidden: "Skjul låste kanaler", - modal_allowed: "Tilladt", - modal_denied: "Nægtet" - }; - case "de": // German - return { - context_changeorder: "Reihenfolge der versteckten Kanäle ändern", - context_changeorder_bottom: "Native Kategorie ganz unten", - context_changeorder_native: "Native Kategorie in der richtigen Reihenfolge", - context_channelaccess: "Kanalzugriff", - context_hidehidden: "Versteckte Kanäle ausblenden", - modal_allowed: "Erlaubt", - modal_denied: "Verweigert" - }; - case "el": // Greek - return { - context_changeorder: "Αλλαγή σειράς κρυφών καναλιών", - context_changeorder_bottom: "Εγγενής κατηγορία στο κάτω μέρος", - context_changeorder_native: "Εγγενής κατηγορία σε σωστή σειρά", - context_channelaccess: "Πρόσβαση καναλιού", - context_hidehidden: "Απόκρυψη κλειδωμένων καναλιών", - modal_allowed: "Επιτρεπόμενο", - modal_denied: "Απορρίφθηκε" - }; - case "es": // Spanish - return { - context_changeorder: "Cambiar el orden de los canales ocultos", - context_changeorder_bottom: "Categoría nativa en la parte inferior", - context_changeorder_native: "Categoría nativa en el orden correcto", - context_channelaccess: "Acceso al canal", - context_hidehidden: "Ocultar canales bloqueados", - modal_allowed: "Permitido", - modal_denied: "Negado" - }; - case "fi": // Finnish - return { - context_changeorder: "Muuta piilotettujen kanavien järjestystä", - context_changeorder_bottom: "Alkuperäinen luokka alareunassa", - context_changeorder_native: "Alkuperäinen luokka oikeassa järjestyksessä", - context_channelaccess: "Kanavan käyttöoikeus", - context_hidehidden: "Piilota lukitut kanavat", - modal_allowed: "Sallittu", - modal_denied: "Kielletty" - }; - case "fr": // French - return { - context_changeorder: "Modifier l'ordre des canaux cachés", - context_changeorder_bottom: "Catégorie native en bas", - context_changeorder_native: "Catégorie native dans le bon ordre", - context_channelaccess: "Accès à la chaîne", - context_hidehidden: "Masquer les salons verrouillées", - modal_allowed: "Permis", - modal_denied: "Refusé" - }; - case "hi": // Hindi - return { - context_changeorder: "हिडन चैनल ऑर्डर बदलें", - context_changeorder_bottom: "नीचे की ओर मूल श्रेणी", - context_changeorder_native: "मूल श्रेणी सही क्रम में", - context_channelaccess: "चैनल एक्सेस", - context_hidehidden: "बंद चैनल छुपाएं Hide", - modal_allowed: "अनुमति है", - modal_denied: "निषेध" - }; - case "hr": // Croatian - return { - context_changeorder: "Promijenite redoslijed skrivenih kanala", - context_changeorder_bottom: "Izvorna kategorija na dnu", - context_changeorder_native: "Izvorna kategorija u ispravnom redoslijedu", - context_channelaccess: "Pristup kanalu", - context_hidehidden: "Sakrij zaključane kanale", - modal_allowed: "Dopuštena", - modal_denied: "Odbijen" - }; - case "hu": // Hungarian - return { - context_changeorder: "Rejtett csatornák sorrendjének módosítása", - context_changeorder_bottom: "Natív kategória az alján", - context_changeorder_native: "Natív kategória helyes sorrendben", - context_channelaccess: "Csatornához való hozzáférés", - context_hidehidden: "Zárt csatornák elrejtése", - modal_allowed: "Megengedett", - modal_denied: "Megtagadva" - }; - case "it": // Italian - return { - context_changeorder: "Modifica l'ordine dei canali nascosti", - context_changeorder_bottom: "Categoria nativa in basso", - context_changeorder_native: "Categoria nativa nell'ordine corretto", - context_channelaccess: "Accesso al canale", - context_hidehidden: "Nascondi canali bloccati", - modal_allowed: "Consentito", - modal_denied: "Negato" - }; - case "ja": // Japanese - return { - context_changeorder: "非表示チャネルの順序を変更する", - context_changeorder_bottom: "下部のネイティブカテゴリ", - context_changeorder_native: "正しい順序のネイティブカテゴリ", - context_channelaccess: "チャネルアクセス", - context_hidehidden: "ロックされたチャンネルを非表示にする", - modal_allowed: "許可", - modal_denied: "拒否されました" - }; - case "ko": // Korean - return { - context_changeorder: "숨겨진 채널 순서 변경", - context_changeorder_bottom: "하단의 기본 카테고리", - context_changeorder_native: "올바른 순서의 네이티브 카테고리", - context_channelaccess: "채널 액세스", - context_hidehidden: "잠긴 채널 숨기기", - modal_allowed: "허용됨", - modal_denied: "거부 됨" - }; - case "lt": // Lithuanian - return { - context_changeorder: "Keisti paslėptų kanalų tvarką", - context_changeorder_bottom: "Gimtoji kategorija apačioje", - context_changeorder_native: "Gimtoji kategorija teisinga tvarka", - context_channelaccess: "Prieiga prie kanalo", - context_hidehidden: "Slėpti užrakintus kanalus", - modal_allowed: "Leidžiama", - modal_denied: "Paneigta" - }; - case "nl": // Dutch - return { - context_changeorder: "Wijzig de volgorde van verborgen kanalen", - context_changeorder_bottom: "Native categorie onderaan", - context_changeorder_native: "Native categorie in de juiste volgorde", - context_channelaccess: "Kanaaltoegang", - context_hidehidden: "Verberg vergrendelde kanalen", - modal_allowed: "Toegestaan", - modal_denied: "Geweigerd" - }; - case "no": // Norwegian - return { - context_changeorder: "Endre rekkefølgen på skjulte kanaler", - context_changeorder_bottom: "Innfødt kategori nederst", - context_changeorder_native: "Innfødt kategori i riktig rekkefølge", - context_channelaccess: "Kanaltilgang", - context_hidehidden: "Skjul låste kanaler", - modal_allowed: "Tillatt", - modal_denied: "Nektet" - }; - case "pl": // Polish - return { - context_changeorder: "Zmień kolejność ukrytych kanałów", - context_changeorder_bottom: "Kategoria natywna na dole", - context_changeorder_native: "Kategoria natywna we właściwej kolejności", - context_channelaccess: "Dostęp do kanałów", - context_hidehidden: "Ukryj zablokowane kanały", - modal_allowed: "Dozwolony", - modal_denied: "Odmówiono" - }; - case "pt-BR": // Portuguese (Brazil) - return { - context_changeorder: "Alterar a ordem dos canais ocultos", - context_changeorder_bottom: "Categoria nativa na parte inferior", - context_changeorder_native: "Categoria nativa na ordem correta", - context_channelaccess: "Acesso ao canal", - context_hidehidden: "Ocultar canais bloqueados", - modal_allowed: "Permitido", - modal_denied: "Negado" - }; - case "ro": // Romanian - return { - context_changeorder: "Schimbați comanda canalelor ascunse", - context_changeorder_bottom: "Categorie nativă în partea de jos", - context_changeorder_native: "Categorie nativă în ordine corectă", - context_channelaccess: "Acces la canal", - context_hidehidden: "Ascundeți canalele blocate", - modal_allowed: "Permis", - modal_denied: "Negat" - }; - case "ru": // Russian - return { - context_changeorder: "Изменить порядок скрытых каналов", - context_changeorder_bottom: "Родная категория внизу", - context_changeorder_native: "Собственная категория в правильном порядке", - context_channelaccess: "Доступ к каналу", - context_hidehidden: "Скрыть заблокированные каналы", - modal_allowed: "Разрешенный", - modal_denied: "Отказано" - }; - case "sv": // Swedish - return { - context_changeorder: "Ändra ordning för dolda kanaler", - context_changeorder_bottom: "Naturlig kategori längst ner", - context_changeorder_native: "Naturlig kategori i rätt ordning", - context_channelaccess: "Kanaltillgång", - context_hidehidden: "Dölj låsta kanaler", - modal_allowed: "Tillåtet", - modal_denied: "Förnekad" - }; - case "th": // Thai - return { - context_changeorder: "เปลี่ยนลำดับช่องที่ซ่อนอยู่", - context_changeorder_bottom: "หมวดหมู่ดั้งเดิมที่ด้านล่าง", - context_changeorder_native: "หมวดหมู่ดั้งเดิมในลำดับที่ถูกต้อง", - context_channelaccess: "การเข้าถึงช่อง", - context_hidehidden: "ซ่อนช่องที่ถูกล็อก", - modal_allowed: "ได้รับอนุญาต", - modal_denied: "ถูกปฏิเสธ" - }; - case "tr": // Turkish - return { - context_changeorder: "Gizli Kanal Sırasını Değiştir", - context_changeorder_bottom: "Altta Yerel Kategori", - context_changeorder_native: "Yerel Kategori doğru sırada", - context_channelaccess: "Kanal Erişimi", - context_hidehidden: "Kilitli Kanalları Gizle", - modal_allowed: "İzin veriliyor", - modal_denied: "Reddedildi" - }; - case "uk": // Ukrainian - return { - context_changeorder: "Змінити порядок прихованих каналів", - context_changeorder_bottom: "Рідна категорія внизу", - context_changeorder_native: "Рідна категорія в правильному порядку", - context_channelaccess: "Доступ до каналу", - context_hidehidden: "Сховати заблоковані канали", - modal_allowed: "Дозволено", - modal_denied: "Заперечується" - }; - case "vi": // Vietnamese - return { - context_changeorder: "Thay đổi thứ tự các kênh bị ẩn", - context_changeorder_bottom: "Danh mục Gốc ở dưới cùng", - context_changeorder_native: "Danh mục gốc theo đúng thứ tự", - context_channelaccess: "Quyền truy cập kênh", - context_hidehidden: "Ẩn các kênh đã khóa", - modal_allowed: "Được phép", - modal_denied: "Phủ định" - }; - case "zh-CN": // Chinese (China) - return { - context_changeorder: "更改隐藏频道顺序", - context_changeorder_bottom: "底部的原生类别", - context_changeorder_native: "正确顺序的本地类别", - context_channelaccess: "频道访问", - context_hidehidden: "隐藏锁定的频道", - modal_allowed: "允许的", - modal_denied: "被拒绝" - }; - case "zh-TW": // Chinese (Taiwan) - return { - context_changeorder: "更改隱藏頻道順序", - context_changeorder_bottom: "底部的原生類別", - context_changeorder_native: "正確順序的本地類別", - context_channelaccess: "頻道訪問", - context_hidehidden: "隱藏鎖定的頻道", - modal_allowed: "允許的", - modal_denied: "被拒絕" - }; - default: // English - return { - context_changeorder: "Change Hidden Channels Order", - context_changeorder_bottom: "Native Category at the bottom", - context_changeorder_native: "Native Category in correct Order", - context_channelaccess: "Channel Access", - context_hidehidden: "Hide Locked Channels", - modal_allowed: "Permitted", - modal_denied: "Denied" - }; - } - } - }; - })(window.BDFDB_Global.PluginUtils.buildPlugin(changeLog)); -})(); diff --git a/Plugins/ShowHiddenChannels/_res/cover.png b/Plugins/ShowHiddenChannels/_res/cover.png deleted file mode 100644 index f1e8df3d68df7c939e018ecdf4b0f758ac046b59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11658 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 UN6qxtzonnat3D}`HGcEI05^Q|G5`Po diff --git a/Plugins/ShowHiddenChannels/_res/screenshot1.png b/Plugins/ShowHiddenChannels/_res/screenshot1.png deleted file mode 100644 index 5b56e49fb65a8af593d23d3941594a79ef93185e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22017 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%0AYg%*{&R`7C$;=^$|LFa&B(Isx^K-F?uxC<`{ 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 diff --git a/Plugins/ShowHiddenChannels/_res/screenshot3.png b/Plugins/ShowHiddenChannels/_res/screenshot3.png deleted file mode 100644 index 99455f9413a35eb3bb12b3352f083997787c03c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14162 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 { + const changeLog = {}; + + return !window.BDFDB_Global || (!window.BDFDB_Global.loaded && !window.BDFDB_Global.started) ? class { + constructor (meta) {for (let key in meta) this[key] = meta[key];} + getName () {return this.name;} + getAuthor () {return this.author;} + getVersion () {return this.version;} + getDescription () {return `The Library Plugin needed for ${this.name} is missing. Open the Plugin Settings to download it. \n\n${this.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 ${this.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(this.name)) window.BDFDB_Global.pluginQueue.push(this.name); + } + start () {this.load();} + stop () {} + getSettingsPanel () { + let template = document.createElement("template"); + template.innerHTML = ``; + template.content.firstElementChild.querySelector("a").addEventListener("click", this.downloadLibrary); + return template.content.firstElementChild; + } + } : (([Plugin, BDFDB]) => { + return class ShowHiddenChannels extends Plugin { + onLoad () {} + + onStart () { + BDFDB.ModalUtils.open(this, { + text: "DUE TO THE NEW PLUGIN GUIDELINES SET BY BETTERDISCORD TAKING EFFECT ON THE 7TH OF SEPTEMBER, SHOWHIDDENCHANNELS WILL NO LONGER BE CONTINUED. CLICK 'DELETE TO REMOVE THIS EMPTFY PLUGIN FILE.", + header: "PLUGIN WAS DISCONTINUED", + buttons: [ + {contents: "DELETE", close: true, color: "RED", onClick: _ => { + BDFDB.LibraryRequires.fs.unlink(BDFDB.LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), "ShowHiddenChannels.plugin.js"), error => {}); + BDFDB.LibraryRequires.fs.unlink(BDFDB.LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), "ShowHiddenChannels.config.json"), error => {}); + }} + ] + }); + } + + onStop () {} + }; + })(window.BDFDB_Global.PluginUtils.buildPlugin(changeLog)); +})();