From 7e6edd76e50d64b36fd7abfa36c0fc13a197ca0b Mon Sep 17 00:00:00 2001 From: Mirco Wittrien Date: Mon, 8 Jun 2020 20:55:34 +0200 Subject: [PATCH] Update EditServers.plugin.js --- Plugins/EditServers/EditServers.plugin.js | 56 +++++++++++++---------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/Plugins/EditServers/EditServers.plugin.js b/Plugins/EditServers/EditServers.plugin.js index 3291113fcd..47abcade85 100644 --- a/Plugins/EditServers/EditServers.plugin.js +++ b/Plugins/EditServers/EditServers.plugin.js @@ -1,6 +1,8 @@ //META{"name":"EditServers","authorId":"278543574059057154","invite":"Jx3TjNS","donate":"https://www.paypal.me/MircoWittrien","patreon":"https://www.patreon.com/MircoWittrien","website":"https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/EditServers","source":"https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/EditServers/EditServers.plugin.js"}*// var EditServers = (_ => { + var changedGuilds = {}, settings = {}; + return class EditServers { getName () {return "EditServers";} @@ -78,7 +80,7 @@ var EditServers = (_ => { onClick: _ => { BDFDB.ModalUtils.confirm(this, "Are you sure you want to reset all Servers?", _ => { BDFDB.DataUtils.remove(this, "servers"); - BDFDB.ModuleUtils.forceAllUpdates(this);; + this.forceUpdateAll();; }); }, children: BDFDB.LanguageUtils.LanguageStrings.RESET @@ -120,7 +122,7 @@ var EditServers = (_ => { let guild = BDFDB.LibraryModules.GuildStore.getGuild(e.methodArguments[0].id); if (guild) { if (e.methodArguments[0].id == "410787888507256842") return guild.banner; - let data = BDFDB.DataUtils.load(this, "servers", guild.id); + let data = changedGuilds[guild.id]; if (data && data.banner && !data.removeBanner) return data.banner; } return e.callOriginalMethod(); @@ -137,7 +139,7 @@ var EditServers = (_ => { } }); - BDFDB.ModuleUtils.forceAllUpdates(this); + this.forceUpdateAll(); } else console.error(`%c[${this.getName()}]%c`, "color: #3a71c1; font-weight: 700;", "", "Fatal Error: Could not load BD functions!"); } @@ -146,7 +148,7 @@ var EditServers = (_ => { if (window.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) { this.stopping = true; - BDFDB.ModuleUtils.forceAllUpdates(this); + this.forceUpdateAll(); for (let guildobj of BDFDB.GuildUtils.getAll()) if (guildobj.instance) delete guildobj.instance.props.guild.EditServersCachedBanner; @@ -176,11 +178,11 @@ var EditServers = (_ => { BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, { label: this.labels.submenu_resetsettings_text, id: BDFDB.ContextMenuUtils.createItemId(this.name, "settings-reset"), - disabled: !BDFDB.DataUtils.load(this, "servers", e.instance.props.guild.id), + disabled: !changedGuilds[e.instance.props.guild.id], action: _ => { BDFDB.ContextMenuUtils.close(e.instance); BDFDB.DataUtils.remove(this, "servers", e.instance.props.guild.id); - BDFDB.ModuleUtils.forceAllUpdates(this); + this.forceUpdateAll(); } }) ] @@ -191,10 +193,10 @@ var EditServers = (_ => { } processGuild (e) { - if (BDFDB.GuildUtils.is(e.instance.props.guild) && BDFDB.DataUtils.get(this, "settings", "changeInGuildList")) { + if (BDFDB.GuildUtils.is(e.instance.props.guild) && settings.changeInGuildList) { e.instance.props.guild = this.getGuildData(e.instance.props.guild.id); if (e.returnvalue) { - let data = BDFDB.DataUtils.load(this, "servers", e.instance.props.guild.id); + let data = changedGuilds[e.instance.props.guild.id]; if (data && (data.color3 || data.color4)) { let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {name: ["GuildTooltip", "BDFDB_TooltipContainer"]}); if (index > -1) children[index] = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, { @@ -214,12 +216,12 @@ var EditServers = (_ => { } processBlobMask (e) { - if (BDFDB.DataUtils.get(this, "settings", "changeInGuildList")) { + if (settings.changeInGuildList) { let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {name: "NavItem"}); if (index > -1 && children[index].props.to && children[index].props.to.pathname) { let guild = BDFDB.LibraryModules.GuildStore.getGuild((children[index].props.to.pathname.split("/channels/")[1] || "").split("/")[0]); if (guild) { - let data = BDFDB.DataUtils.load(this, "servers", guild.id); + let data = changedGuilds[guild.id]; if (data) { if (data.shortName) children[index].props.name = data.shortName.split("").join(" "); else if (data.name && data.ignoreCustomName) children[index].props.name = guild.name; @@ -230,9 +232,9 @@ var EditServers = (_ => { } processGuildAcronym (e) { - if (typeof e.returnvalue.props.children == "function" && BDFDB.DataUtils.get(this, "settings", "changeInGuildList")) { + if (typeof e.returnvalue.props.children == "function" && settings.changeInGuildList) { let pathname = BDFDB.ReactUtils.getValue(e.instance, "props.to.pathname"); - let data = pathname && BDFDB.DataUtils.load(this, "servers", (pathname.split("/channels/")[1] || "").split("/")[0]); + let data = pathname && changedGuilds[(pathname.split("/channels/")[1] || "").split("/")[0]]; if (data) { let renderChildren = e.returnvalue.props.children; e.returnvalue.props.children = (...args) => { @@ -257,7 +259,6 @@ var EditServers = (_ => { processGuildIconWrapper (e) { if (BDFDB.GuildUtils.is(e.instance.props.guild)) { - let settings = BDFDB.DataUtils.get(this, "settings"); if (e.instance.props.className && e.instance.props.className.indexOf(BDFDB.disCN.guildfolderguildicon) > -1) e.instance.props.guild = this.getGuildData(e.instance.props.guild.id, settings.changeInGuildList); else if (e.instance.props.className && e.instance.props.className.indexOf(BDFDB.disCN.listavatar) > -1) e.instance.props.guild = this.getGuildData(e.instance.props.guild.id, settings.changeInMutualGuilds); else e.instance.props.guild = this.getGuildData(e.instance.props.guild.id); @@ -266,9 +267,8 @@ var EditServers = (_ => { processGuildIcon (e) { if (BDFDB.GuildUtils.is(e.instance.props.guild) && e.instance.props.style && (!e.instance.props.style.backgroundImage || e.instance.props.style.backgroundImage == "none")) { - let data = BDFDB.DataUtils.load(this, "servers", e.instance.props.guild.id); + let data = changedGuilds[e.instance.props.guild.id]; if (data) { - let settings = BDFDB.DataUtils.get(this, "settings"); if (e.instance.props.className && e.instance.props.className.indexOf(BDFDB.disCN.guildfolderguildicon) > -1) this.changeGuildIcon(e, data, settings.changeInGuildList); else if (e.instance.props.className && e.instance.props.className.indexOf(BDFDB.disCN.listavatar) > -1 || BDFDB.ReactUtils.findConstructor(e.instance, "MutualGuild", {up: true})) this.changeGuildIcon(e, data, settings.changeInMutualGuilds); else this.changeGuildIcon(e, data); @@ -277,25 +277,25 @@ var EditServers = (_ => { } processMutualGuilds (e) { - if (BDFDB.DataUtils.get(this, "settings", "changeInMutualGuilds")) for (let i in e.instance.props.mutualGuilds) e.instance.props.mutualGuilds[i].guild = this.getGuildData(e.instance.props.mutualGuilds[i].guild.id); + if (settings.changeInMutualGuilds) for (let i in e.instance.props.mutualGuilds) e.instance.props.mutualGuilds[i].guild = this.getGuildData(e.instance.props.mutualGuilds[i].guild.id); } processFriendRow (e) { - if (BDFDB.DataUtils.get(this, "settings", "changeInMutualGuilds")) for (let i in e.instance.props.mutualGuilds) e.instance.props.mutualGuilds[i] = this.getGuildData(e.instance.props.mutualGuilds[i].id); + if (settings.changeInMutualGuilds) for (let i in e.instance.props.mutualGuilds) e.instance.props.mutualGuilds[i] = this.getGuildData(e.instance.props.mutualGuilds[i].id); } processQuickSwitcher (e) { - if (BDFDB.DataUtils.get(this, "settings", "changeInQuickSwitcher")) for (let i in e.instance.props.results) if (e.instance.props.results[i].type == "GUILD") e.instance.props.results[i].record = this.getGuildData(e.instance.props.results[i].record.id); + if (settings.changeInQuickSwitcher) for (let i in e.instance.props.results) if (e.instance.props.results[i].type == "GUILD") e.instance.props.results[i].record = this.getGuildData(e.instance.props.results[i].record.id); } processQuickSwitchChannelResult (e) { - if (e.instance.props.channel && e.instance.props.channel.guild_id && BDFDB.DataUtils.get(this, "settings", "changeInQuickSwitcher")) { + if (e.instance.props.channel && e.instance.props.channel.guild_id && settings.changeInQuickSwitcher) { e.instance.props.children.props.children = this.getGuildData(e.instance.props.channel.guild_id).name; } } processMessagesPopout (e) { - if (BDFDB.DataUtils.get(this, "settings", "changeInRecentMentions")) { + if (settings.changeInRecentMentions) { let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {name: "VerticalScroller"}); if (index > -1 && children[index].props.children && BDFDB.ArrayUtils.is(children[index].props.children[0])) for (let i in children[index].props.children[0]) { let divider = children[index].props.children[0][i]; @@ -312,7 +312,7 @@ var EditServers = (_ => { processGuildSidebar (e) { if (e.instance.props.guild) { - let data = BDFDB.DataUtils.load(this, "servers", e.instance.props.guild.id); + let data = changedGuilds[e.instance.props.guild.id]; if (data) { if (data.removeBanner) e.instance.props.guild = new BDFDB.DiscordObjects.Guild(Object.assign({}, e.instance.props.guild, {banner: null})); else if (data.banner) e.instance.props.guild = new BDFDB.DiscordObjects.Guild(Object.assign({}, e.instance.props.guild, {banner: data.banner})); @@ -322,7 +322,6 @@ var EditServers = (_ => { processGuildHeader (e) { if (e.instance.props.guild) { - let settings = BDFDB.DataUtils.get(this, "settings"); if (settings.changeInGuildHeader) { e.instance.props.guild = this.getGuildData(e.instance.props.guild.id); let oldName = (BDFDB.LibraryModules.GuildStore.getGuild(e.instance.props.guild.id) || {}).name; @@ -340,7 +339,7 @@ var EditServers = (_ => { getGuildData (guildId, change = true) { let guild = BDFDB.LibraryModules.GuildStore.getGuild(guildId); if (!guild) return new BDFDB.DiscordObjects.Guild({}); - let data = change && BDFDB.DataUtils.load(this, "servers", guild.id); + let data = change && changedGuilds[guild.id]; if (data) { let newGuildObject = {}, nativeObject = new BDFDB.DiscordObjects.Guild(guild); for (let key in nativeObject) newGuildObject[key] = nativeObject[key]; @@ -374,11 +373,18 @@ var EditServers = (_ => { }); } } + + forceUpdateAll () { + changedGuilds = BDFDB.DataUtils.load(this, "servers"); + settings = BDFDB.DataUtils.get(this, "settings"); + + BDFDB.ModuleUtils.forceAllUpdates(this); + } openGuildSettingsModal (guildId) { let guild = BDFDB.LibraryModules.GuildStore.getGuild(guildId); if (!guild) return; - let data = BDFDB.DataUtils.load(this, "servers", guild.id) || {}; + let data = changedGuilds[guild.id] || {}; let currentIgnoreCustomNameState = data.ignoreCustomName; @@ -614,7 +620,7 @@ var EditServers = (_ => { let changed = false; if (Object.keys(data).every(key => !data[key]) && (changed = true)) BDFDB.DataUtils.remove(this, "servers", guild.id); else if (!BDFDB.equals(olddata, data) && (changed = true)) BDFDB.DataUtils.save(data, this, "servers", guild.id); - if (changed) BDFDB.ModuleUtils.forceAllUpdates(this);; + if (changed) this.forceUpdateAll();; } }] });