From 037269e60088629e09f80ef6742d7ef5c336e6b8 Mon Sep 17 00:00:00 2001 From: Mirco Wittrien Date: Thu, 20 May 2021 16:44:45 +0200 Subject: [PATCH] stuff --- Plugins/EditChannels/EditChannels.plugin.js | 162 +++++++------ Plugins/EditUsers/EditUsers.plugin.js | 229 ++++++++++-------- .../RemoveNicknames/RemoveNicknames.plugin.js | 118 +++++---- 3 files changed, 292 insertions(+), 217 deletions(-) diff --git a/Plugins/EditChannels/EditChannels.plugin.js b/Plugins/EditChannels/EditChannels.plugin.js index 5d55307de0..1c99096e05 100644 --- a/Plugins/EditChannels/EditChannels.plugin.js +++ b/Plugins/EditChannels/EditChannels.plugin.js @@ -65,25 +65,28 @@ module.exports = (_ => { return template.content.firstElementChild; } } : (([Plugin, BDFDB]) => { - var changedChannels = {}, settings = {}; + var changedChannels = {}; return class EditChannels extends Plugin { onLoad () { this.defaults = { - settings: { - changeChannelIcon: {value: true, inner: false, description: "Change color of Channel Icon"}, - changeInChatTextarea: {value: true, inner: true, description: "Chat Textarea"}, - changeInMentions: {value: true, inner: true, description: "Mentions"}, - changeInChannelList: {value: true, inner: true, description: "Channel/Group List"}, - changeInChannelHeader: {value: true, inner: true, description: "Channel/Group Header"}, - changeInRecentDms: {value: true, inner: true, description: "Group Notifications"}, - changeInRecentMentions: {value: true, inner: true, description: "Recent Mentions Popout"}, - changeInAutoComplete: {value: true, inner: true, description: "Autocomplete Menu"}, - changeInAuditLog: {value: true, inner: true, description: "Audit Log"}, - changeInInviteLog: {value: true, inner: true, description: "Invite Log"}, - changeInQuickSwitcher: {value: true, inner: true, description: "Quick Switcher"}, - changeInSearchResults: {value: true, inner: true, description: "Search Results"}, - changeInSearchPopout: {value: true, inner: true, description: "Search Popout"} + general: { + changeChannelIcon: {value: true, description: "Change Color of Channel Icon"} + }, + places: { + chatTextarea: {value: true, description: "Chat Textarea"}, + mentions: {value: true, description: "Mentions"}, + channelList: {value: true, description: "Channel/Group List"}, + channelHeader: {value: true, description: "Channel/Group Header"}, + recentDms: {value: true, description: "Group Notifications"}, + recentMentions: {value: true, description: "Recent Mentions Popout"}, + autocompletes: {value: true, description: "Autocomplete Menu"}, + auditLog: {value: true, description: "Audit Log"}, + inviteLog: {value: true, description: "Invite Log"}, + quickSwitcher: {value: true, description: "Quick Switcher"}, + searchResults: {value: true, description: "Search Results"}, + searchPopout: {value: true, description: "Search Popout"}, + appTitle: {value: true, description: "Discord App Title (Channels)"} } }; @@ -125,6 +128,20 @@ module.exports = (_ => { } onStart () { + // REMOVE 16.05.2021 + let oldData = BDFDB.DataUtils.load(this); + if (oldData.settings) { + this.settings.general = BDFDB.ObjectUtils.filter(oldData.settings, k => k.indexOf("changeIn") == -1, true); + this.settings.places = Object.entries(BDFDB.ObjectUtils.filter(oldData.settings, k => k.indexOf("changeIn") == 0, true)).reduce((n, p) => { + let k = p[0].replace("changeIn", ""); + n[k[0].toLowerCase() + k.slice(1)] = p[1]; + return n; + }, {}); + BDFDB.DataUtils.save(this.settings.general, this, "general"); + BDFDB.DataUtils.save(this.settings.places, this, "places"); + BDFDB.DataUtils.remove(this, "settings"); + } + let observer = new MutationObserver(_ => {this.changeAppTitle();}); BDFDB.ObserverUtils.connect(this, document.head.querySelector("title"), {name: "appTitleObserver", instance: observer}, {childList: true}); @@ -154,39 +171,45 @@ module.exports = (_ => { } getSettingsPanel (collapseStates = {}) { - let settingsPanel, settingsItems = []; - - for (let key in settings) if (!this.defaults.settings[key].inner) settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, { - type: "Switch", - plugin: this, - keys: ["settings", key], - label: this.defaults.settings[key].description, - value: settings[key] - })); - settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, { - title: "Change Channels in:", - children: Object.keys(settings).map(key => this.defaults.settings[key].inner && BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, { - type: "Switch", - plugin: this, - keys: ["settings", key], - label: this.defaults.settings[key].description, - value: settings[key] - })) - })); - settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, { - type: "Button", - color: BDFDB.LibraryComponents.Button.Colors.RED, - label: "Reset all Channels", - onClick: _ => { - BDFDB.ModalUtils.confirm(this, this.labels.confirm_resetall, _ => { - BDFDB.DataUtils.remove(this, "channels"); - this.forceUpdateAll(); - }); - }, - children: BDFDB.LanguageUtils.LanguageStrings.RESET - })); - - return settingsPanel = BDFDB.PluginUtils.createSettingsPanel(this, settingsItems); + let settingsPanel; + return settingsPanel = BDFDB.PluginUtils.createSettingsPanel(this, { + collapseStates: collapseStates, + children: _ => { + let settingsItems = []; + + settingsItems.push(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] + }))); + + settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, { + title: "Change Channels in:", + children: Object.keys(this.defaults.places).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, { + type: "Switch", + plugin: this, + keys: ["places", key], + label: this.defaults.places[key].description, + value: this.settings.places[key] + })) + })); + + settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, { + type: "Button", + color: BDFDB.LibraryComponents.Button.Colors.RED, + label: "Reset all Channels", + onClick: _ => BDFDB.ModalUtils.confirm(this, this.labels.confirm_resetall, _ => { + BDFDB.DataUtils.remove(this, "channels"); + this.forceUpdateAll();; + }), + children: BDFDB.LanguageUtils.LanguageStrings.RESET + })); + + return settingsItems; + } + }); } onSettingsClosed () { @@ -198,7 +221,6 @@ module.exports = (_ => { forceUpdateAll (instant = false) { changedChannels = BDFDB.DataUtils.load(this, "channels"); - settings = BDFDB.DataUtils.get(this, "settings"); this.changeAppTitle(); BDFDB.PatchUtils.forceAllUpdates(this); @@ -252,14 +274,14 @@ module.exports = (_ => { } processChannelEditorContainer (e) { - if (!e.instance.props.disabled && e.instance.props.channel && BDFDB.ChannelUtils.isTextChannel(e.instance.props.channel) && e.instance.props.type == BDFDB.DiscordConstants.TextareaTypes.NORMAL && settings.changeInChatTextarea) { + if (!e.instance.props.disabled && e.instance.props.channel && BDFDB.ChannelUtils.isTextChannel(e.instance.props.channel) && e.instance.props.type == BDFDB.DiscordConstants.TextareaTypes.NORMAL && this.settings.places.chatTextarea) { let data = changedChannels[e.instance.props.channel.id]; e.instance.props.placeholder = BDFDB.LanguageUtils.LanguageStringsFormat("TEXTAREA_PLACEHOLDER", `#${data && data.name || e.instance.props.channel.name}`); } } processAutocompleteChannelResult (e) { - if (e.instance.props.channel && settings.changeInAutoComplete) { + if (e.instance.props.channel && this.settings.places.autocompletes) { if (!e.returnvalue) { e.instance.props.channel = this.getChannelData(e.instance.props.channel.id); if (e.instance.props.category) e.instance.props.category = this.getChannelData(e.instance.props.category.id); @@ -279,7 +301,7 @@ module.exports = (_ => { processAuditLog (e) { let channel = BDFDB.ObjectUtils.get(e.instance, "props.log.options.channel"); - if (channel && settings.changeInAuditLog) { + if (channel && this.settings.places.auditLog) { if (!e.returnvalue) e.instance.props.log.options.channel = this.getChannelData(channel.id); else { let channelName = BDFDB.ReactUtils.findChild(e.returnvalue, {props: [["children", [["#" + channel.name]]]]}); @@ -289,7 +311,7 @@ module.exports = (_ => { } processSettingsInvites (e) { - if (BDFDB.ObjectUtils.is(e.instance.props.invites) && settings.changeInInviteLog) { + if (BDFDB.ObjectUtils.is(e.instance.props.invites) && this.settings.places.inviteLog) { e.instance.props.invites = Object.assign({}, e.instance.props.invites); for (let id in e.instance.props.invites) e.instance.props.invites[id] = new BDFDB.DiscordObjects.Invite(Object.assign({}, e.instance.props.invites[id], {channel: this.getChannelData(e.instance.props.invites[id].channel.id)})); } @@ -297,7 +319,7 @@ module.exports = (_ => { processHeaderBarContainer (e) { let channel = BDFDB.LibraryModules.ChannelStore.getChannel(e.instance.props.channelId); - if (channel && (BDFDB.ChannelUtils.isTextChannel(channel) || channel.isGroupDM()) && settings.changeInChannelHeader) { + if (channel && (BDFDB.ChannelUtils.isTextChannel(channel) || channel.isGroupDM()) && this.settings.places.channelHeader) { if (!e.returnvalue) { let channelName = BDFDB.ReactUtils.findChild(e.instance, {name: ["Title", "ChannelName"]}); if (channelName) { @@ -327,14 +349,14 @@ module.exports = (_ => { processFocusRing (e) { if (e.returnvalue && e.returnvalue.props.className) { let change, channelId, nameClass, categoyClass, iconClass, modify = {}; - if (settings.changeInChannelList && e.returnvalue.props.className.indexOf(BDFDB.disCN.categoryiconvisibility) > -1) { + if (this.settings.places.channelList && e.returnvalue.props.className.indexOf(BDFDB.disCN.categoryiconvisibility) > -1) { change = true; channelId = (BDFDB.ReactUtils.findValue(e.returnvalue, "data-list-item-id") || "").split("_").pop(); nameClass = BDFDB.disCN.categoryname; iconClass = BDFDB.disCN.categoryicon; modify = {muted: BDFDB.LibraryModules.MutedUtils.isGuildOrCategoryOrChannelMuted(BDFDB.LibraryModules.LastGuildStore.getGuildId(), channelId)}; } - else if (settings.changeInSearchPopout && e.returnvalue.props.className.indexOf(BDFDB.disCN.searchpopoutoption) > -1) { + else if (this.settings.places.searchPopout && e.returnvalue.props.className.indexOf(BDFDB.disCN.searchpopoutoption) > -1) { change = true; let channel = (BDFDB.ReactUtils.findValue(e.returnvalue._owner, "result", {up: true}) || {}).channel; channelId = channel && channel.id; @@ -365,17 +387,17 @@ module.exports = (_ => { } processChannelCategoryItem (e) { - if (e.instance.props.channel && settings.changeInChannelList) e.instance.props.channel = this.getChannelData(e.instance.props.channel.id); + if (e.instance.props.channel && this.settings.places.channelList) e.instance.props.channel = this.getChannelData(e.instance.props.channel.id); } processChannelItem (e) { - if (e.instance.props.channel && settings.changeInChannelList) { + if (e.instance.props.channel && this.settings.places.channelList) { if (!e.returnvalue) e.instance.props.channel = this.getChannelData(e.instance.props.channel.id); else { let modify = BDFDB.ObjectUtils.extract(Object.assign({}, e.instance.props, e.instance.state), "muted", "locked", "selected", "unread", "connected", "hovered"); let channelName = BDFDB.ReactUtils.findChild(e.returnvalue, {props: [["className", BDFDB.disCN.channelnameinner]]}); if (channelName) this.changeChannelColor(channelName, e.instance.props.channel.id, modify); - let channelIcon = settings.changeChannelIcon && BDFDB.ReactUtils.findChild(e.returnvalue, {name: "ChannelItemIcon"}); + let channelIcon = this.settings.general.changeChannelIcon && BDFDB.ReactUtils.findChild(e.returnvalue, {name: "ChannelItemIcon"}); if (channelIcon && typeof channelIcon.type == "function") { let type = channelIcon.type; channelIcon.type = (...args) => { @@ -396,7 +418,7 @@ module.exports = (_ => { } processDirectMessage (e) { - if (e.instance.props.channel && e.instance.props.channel.isGroupDM() && settings.changeInRecentDms) { + if (e.instance.props.channel && e.instance.props.channel.isGroupDM() && this.settings.places.recentDms) { let tooltip = BDFDB.ReactUtils.findChild(e.returnvalue, {name: "ListItemTooltip"}); if (tooltip) tooltip.props.text = this.getGroupName(e.instance.props.channel.id); let avatar = BDFDB.ReactUtils.findChild(e.returnvalue, {filter: c => c && c.props && !isNaN(parseInt(c.props.id))}); @@ -412,7 +434,7 @@ module.exports = (_ => { } processPrivateChannel (e) { - if (e.instance.props.channel && e.instance.props.channel.isGroupDM() && settings.changeInChannelList) { + if (e.instance.props.channel && e.instance.props.channel.isGroupDM() && this.settings.places.channelList) { e.returnvalue.props.name = BDFDB.ReactUtils.createElement("span", {children: this.getGroupName(e.instance.props.channel.id)}); this.changeChannelColor(e.returnvalue.props.name, e.instance.props.channel.id, {modify: BDFDB.ObjectUtils.extract(Object.assign({}, e.instance.props, e.instance.state), "hovered", "selected", "hasUnreadMessages", "muted")}); e.returnvalue.props.name = [e.returnvalue.props.name]; @@ -421,7 +443,7 @@ module.exports = (_ => { } processQuickSwitchChannelResult (e) { - if (e.instance.props.channel && settings.changeInQuickSwitcher) { + if (e.instance.props.channel && this.settings.places.quickSwitcher) { if (!e.returnvalue) { e.instance.props.channel = this.getChannelData(e.instance.props.channel.id); if (e.instance.props.category) e.instance.props.category = this.getChannelData(e.instance.props.category.id); @@ -441,13 +463,13 @@ module.exports = (_ => { } processSearchPopoutComponent (e) { - if (BDFDB.ArrayUtils.is(BDFDB.ObjectUtils.get(e, "instance.props.resultsState.autocompletes")) && settings.changeInSearchPopout) { + if (BDFDB.ArrayUtils.is(BDFDB.ObjectUtils.get(e, "instance.props.resultsState.autocompletes")) && this.settings.places.searchPopout) { for (let autocomplete of e.instance.props.resultsState.autocompletes) if (autocomplete && BDFDB.ArrayUtils.is(autocomplete.results)) for (let result of autocomplete.results) if (result.channel) result.channel = this.getChannelData(result.channel.id); } } processSearchResultsInner (e) { - if (settings.changeInSearchResults) { + if (this.settings.places.searchResults) { let results = BDFDB.ReactUtils.findChild(e.returnvalue, {props: [["id", "search-results"]]}); if (results && BDFDB.ArrayUtils.is(results.props.children)) for (let group of results.props.children) { let channelId = (BDFDB.ObjectUtils.get(group, "props.children.key") || "").split("-")[0]; @@ -461,7 +483,7 @@ module.exports = (_ => { } processRecentsChannelHeader (e) { - if (settings.changeInRecentMentions && BDFDB.ArrayUtils.is(e.returnvalue.props.children)) { + if (this.settings.places.recentMentions && BDFDB.ArrayUtils.is(e.returnvalue.props.children)) { for (let child of e.returnvalue.props.children) if (child && child.props && child.props.channel && child.type.displayName == "ChannelName") { child.props.channel = this.getChannelData(child.props.channel.id); let oldType = child.type; @@ -477,7 +499,7 @@ module.exports = (_ => { } processMessageContent (e) { - if (BDFDB.ArrayUtils.is(e.instance.props.content) && settings.changeInMentions) for (let ele of e.instance.props.content) { + if (BDFDB.ArrayUtils.is(e.instance.props.content) && this.settings.places.mentions) for (let ele of e.instance.props.content) { if (BDFDB.ReactUtils.isValidElement(ele) && ele.type && ele.type.displayName == "Tooltip" && typeof ele.props.children == "function") { let children = ele.props.children({}); if (children && children.type.displayName == "Mention" && children.props.children && typeof children.props.children[0] == "string" && children.props.children[0][0] == "#") { @@ -512,7 +534,7 @@ module.exports = (_ => { } processRichChannelMention (e) { - if (e.instance.props.id && settings.changeInMentions) { + if (e.instance.props.id && this.settings.places.mentions) { let name = (changedChannels[e.instance.props.id] || {}).name; let color = this.getChannelDataColor(e.instance.props.id); if (name || color) { @@ -567,8 +589,8 @@ module.exports = (_ => { let channel = BDFDB.LibraryModules.ChannelStore.getChannel(BDFDB.LibraryModules.LastChannelStore.getChannelId()); let title = document.head.querySelector("title"); if (title) { - if (BDFDB.ChannelUtils.isTextChannel(channel)) BDFDB.DOMUtils.setText(title, "#" + this.getChannelData(channel.id, settings.changeAppTitle).name); - else if (channel && channel.isGroupDM()) BDFDB.DOMUtils.setText(title, this.getGroupName(channel.id, settings.changeAppTitle)); + if (BDFDB.ChannelUtils.isTextChannel(channel)) BDFDB.DOMUtils.setText(title, "#" + this.getChannelData(channel.id, this.settings.places.appTitle).name); + else if (channel && channel.isGroupDM()) BDFDB.DOMUtils.setText(title, this.getGroupName(channel.id, this.settings.places.appTitle)); } } @@ -593,7 +615,7 @@ module.exports = (_ => { changeChannelIconColor (child, channelId, modify) { let color = child && this.getChannelDataColor(channelId); - if (color && settings.changeChannelIcon) { + if (color && this.settings.general.changeChannelIcon) { color = modify ? this.chooseColor(BDFDB.ObjectUtils.is(color) ? color[0] : color, modify) : BDFDB.ColorUtils.convert(BDFDB.ObjectUtils.is(color) ? color[0] : color, "RGBA"); child.props.color = color || "currentColor"; if (color) child.props.foreground = null; diff --git a/Plugins/EditUsers/EditUsers.plugin.js b/Plugins/EditUsers/EditUsers.plugin.js index 3aae178473..4172b812a7 100644 --- a/Plugins/EditUsers/EditUsers.plugin.js +++ b/Plugins/EditUsers/EditUsers.plugin.js @@ -2,7 +2,7 @@ * @name EditUsers * @author DevilBro * @authorId 278543574059057154 - * @version 4.2.1 + * @version 4.2.2 * @description Allows you to locally edit Users * @invite Jx3TjNS * @donate https://www.paypal.me/MircoWittrien @@ -17,12 +17,12 @@ module.exports = (_ => { "info": { "name": "EditUsers", "author": "DevilBro", - "version": "4.2.1", + "version": "4.2.2", "description": "Allows you to locally edit Users" }, "changeLog": { "fixed": { - "Failed Messages": "No longer overwrites the red color indicating a message that failed to send" + "Mentions": "" } } }; @@ -65,42 +65,39 @@ module.exports = (_ => { return template.content.firstElementChild; } } : (([Plugin, BDFDB]) => { - var changedUsers = {}, settings = {}; - - const settingsHeaders = { - sub: "Change Users in:", - main: "Change Users in the Chat Window (Messages, Reactions, Mentions, etc.) in:" - }; + var changedUsers = {}; return class EditUsers extends Plugin { onLoad () { this.defaults = { - settings: { - changeInServers: {value: true, category: "main", description: "Servers"}, - changeInDms: {value: true, category: "main", description: "Direct Messages"}, - changeInContextMenu: {value: true, category: "sub", description: "User ContextMenu"}, - changeInChatTextarea: {value: true, category: "sub", description: "Chat Textarea"}, - changeInChatWindow: {value: true, category: "sub", description: "Messages"}, - changeInReactions: {value: true, category: "sub", description: "Reactions"}, - changeInMentions: {value: true, category: "sub", description: "Mentions"}, - changeInMemberList: {value: true, category: "sub", description: "Member List"}, - changeInVoiceChat: {value: true, category: "sub", description: "Voice Channels"}, - changeInRecentDms: {value: true, category: "sub", description: "Direct Message Notifications"}, - changeInDmsList: {value: true, category: "sub", description: "Direct Message List"}, - changeInDmHeader: {value: true, category: "sub", description: "Direct Message Header"}, - changeInDmCalls: {value: true, category: "sub", description: "Calls/ScreenShares"}, - changeInTyping: {value: true, category: "sub", description: "Typing List"}, - changeInFriendList: {value: true, category: "sub", description: "Friend List"}, - changeInInviteList: {value: true, category: "sub", description: "Invite List"}, - changeInActivity: {value: true, category: "sub", description: "Activity Page"}, - changeInUserPopout: {value: true, category: "sub", description: "User Popouts"}, - changeInUserProfile: {value: true, category: "sub", description: "User Profile Modal"}, - changeInAutoComplete: {value: true, category: "sub", description: "Autocomplete Menu"}, - changeInGuildSettings: {value: true, category: "sub", description: "Server Settings"}, - changeInQuickSwitcher: {value: true, category: "sub", description: "Quick Switcher"}, - changeInSearchPopout: {value: true, category: "sub", description: "Search Popout"}, - changeInUserAccount: {value: true, category: "sub", description: "Your Account Information"}, - changeInAppTitle: {value: true, category: "sub", description: "Discord App Title (DMs)"} + types: { + servers: {value: true, description: "Servers"}, + dms: {value: true, description: "Direct Messages"}, + }, + places: { + contextMenu: {value: true, description: "User ContextMenu"}, + chatTextarea: {value: true, description: "Chat Textarea"}, + chatWindow: {value: true, description: "Messages"}, + reactions: {value: true, description: "Reactions"}, + mentions: {value: true, description: "Mentions"}, + memberList: {value: true, description: "Member List"}, + voiceChat: {value: true, description: "Voice Channels"}, + recentDms: {value: true, description: "Direct Message Notifications"}, + dmsList: {value: true, description: "Direct Message List"}, + dmHeader: {value: true, description: "Direct Message Header"}, + dmCalls: {value: true, description: "Calls/ScreenShares"}, + typing: {value: true, description: "Typing List"}, + friendList: {value: true, description: "Friend List"}, + inviteList: {value: true, description: "Invite List"}, + activity: {value: true, description: "Activity Page"}, + userPopout: {value: true, description: "User Popouts"}, + userProfile: {value: true, description: "User Profile Modal"}, + autcocompletes: {value: true, description: "Autocomplete Menu"}, + guildSettings: {value: true, description: "Server Settings"}, + quickSwitcher: {value: true, description: "Quick Switcher"}, + searchPopout: {value: true, description: "Search Popout"}, + userAccount: {value: true, description: "Your Account Information"}, + appTitle: {value: true, description: "Discord App Title (DMs)"} } }; @@ -198,11 +195,25 @@ module.exports = (_ => { } onStart () { + // REMOVE 16.05.2021 + let oldData = BDFDB.DataUtils.load(this); + if (oldData.settings) { + this.settings.general = BDFDB.ObjectUtils.filter(oldData.settings, k => k.indexOf("changeIn") == -1, true); + this.settings.places = Object.entries(BDFDB.ObjectUtils.filter(oldData.settings, k => k.indexOf("changeIn") == 0, true)).reduce((n, p) => { + let k = p[0].replace("changeIn", ""); + n[k[0].toLowerCase() + k.slice(1)] = p[1]; + return n; + }, {}); + BDFDB.DataUtils.save(this.settings.general, this, "general"); + BDFDB.DataUtils.save(this.settings.places, this, "places"); + BDFDB.DataUtils.remove(this, "settings"); + } + let observer = new MutationObserver(_ => {this.changeAppTitle();}); BDFDB.ObserverUtils.connect(this, document.head.querySelector("title"), {name: "appTitleObserver", instance: observer}, {childList: true}); BDFDB.PatchUtils.patch(this, BDFDB.LibraryModules.MessageAuthorUtils, ["default", "getMessageAuthor"], {after: e => { - if (settings.changeInChatWindow && e.methodArguments[0] && e.methodArguments[0].author && changedUsers[e.methodArguments[0].author.id] && this.shouldChangeInChat(e.methodArguments[0].channel_id)) { + if (this.settings.places.chatWindow && e.methodArguments[0] && e.methodArguments[0].author && changedUsers[e.methodArguments[0].author.id] && this.shouldchat(e.methodArguments[0].channel_id)) { let data = changedUsers[e.methodArguments[0].author.id]; if (data.name || data.color1) { let member = BDFDB.LibraryModules.MemberStore.getMember((BDFDB.LibraryModules.ChannelStore.getChannel(e.methodArguments[0].channel_id) || {}).guild_id, e.methodArguments[0].author.id); @@ -262,18 +273,29 @@ module.exports = (_ => { collapseStates: collapseStates, children: _ => { let settingsItems = []; - - for (let cat in settingsHeaders) settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, { - title: settingsHeaders[cat], - dividerBottom: true, - children: Object.keys(settings).filter(key => this.defaults.settings[key].category == cat).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, { + + settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, { + title: "Change Users in:", + children: Object.keys(this.defaults.places).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, { type: "Switch", plugin: this, - keys: ["settings", key], - label: this.defaults.settings[key].description, - value: settings[key] + keys: ["places", key], + label: this.defaults.places[key].description, + value: this.settings.places[key] })) })); + + settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, { + title: "Change Users in the Chat Window (Messages, Reactions, Mentions, etc.) in:", + children: Object.keys(this.defaults.types).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, { + type: "Switch", + plugin: this, + keys: ["types", key], + label: this.defaults.types[key].description, + value: this.settings.types[key] + })) + })); + settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsLabel, { label: "Changed Users:" })); @@ -315,7 +337,6 @@ module.exports = (_ => { forceUpdateAll () { changedUsers = BDFDB.DataUtils.load(this, "users"); - settings = BDFDB.DataUtils.get(this, "settings"); this.changeAppTitle(); BDFDB.PatchUtils.forceAllUpdates(this); @@ -325,7 +346,7 @@ module.exports = (_ => { onUserContextMenu (e) { if (e.instance.props.user) { let userName = this.getUserData(e.instance.props.user.id).username; - if (userName != e.instance.props.user.username && settings.changeInContextMenu) { + if (userName != e.instance.props.user.username && this.settings.places.contextMenu) { let [kickChilden, kickIndex] = BDFDB.ContextMenuUtils.findItem(e.returnvalue, {id: "kick"}); if (kickIndex > -1) kickChilden[kickIndex].props.label = BDFDB.LanguageUtils.LanguageStringsFormat("KICK_USER", userName); let [banChilden, banIndex] = BDFDB.ContextMenuUtils.findItem(e.returnvalue, {id: "ban"}); @@ -371,14 +392,14 @@ module.exports = (_ => { } processChannelEditorContainer (e) { - if (!e.instance.props.disabled && e.instance.props.channel && e.instance.props.channel.isDM() && e.instance.props.type == BDFDB.DiscordConstants.TextareaTypes.NORMAL && settings.changeInChatTextarea) { + if (!e.instance.props.disabled && e.instance.props.channel && e.instance.props.channel.isDM() && e.instance.props.type == BDFDB.DiscordConstants.TextareaTypes.NORMAL && this.settings.places.chatTextarea) { let user = BDFDB.LibraryModules.UserStore.getUser(e.instance.props.channel.recipients[0]); if (user) e.instance.props.placeholder = BDFDB.LanguageUtils.LanguageStringsFormat("TEXTAREA_PLACEHOLDER", `@${changedUsers[user.id] && changedUsers[user.id].name || user.username}`); } } processAutocompleteUserResult (e) { - if (e.instance.props.user && settings.changeInAutoComplete) { + if (e.instance.props.user && this.settings.places.autocompletes) { if (!e.returnvalue) { e.instance.props.user = this.getUserData(e.instance.props.user.id); let data = changedUsers[e.instance.props.user.id]; @@ -393,7 +414,7 @@ module.exports = (_ => { processHeaderBarContainer (e) { let channel = BDFDB.LibraryModules.ChannelStore.getChannel(e.instance.props.channelId); - if (channel && channel.isDM() && settings.changeInDmHeader) { + if (channel && channel.isDM() && this.settings.places.dmHeader) { let userName = BDFDB.ReactUtils.findChild(e.instance, {name: "Title"}); if (userName) { let recipientId = channel.getRecipientId(); @@ -404,7 +425,7 @@ module.exports = (_ => { } processChannelCallHeader (e) { - if (e.instance.props.channel && e.instance.props.channel.isDM() && settings.changeInDmHeader) { + if (e.instance.props.channel && e.instance.props.channel.isDM() && this.settings.places.dmHeader) { let userName = BDFDB.ReactUtils.findChild(e.returnvalue, {name: "Title"}); if (userName) { let recipientId = e.instance.props.channel.getRecipientId(); @@ -425,28 +446,28 @@ module.exports = (_ => { let tagClass = ""; switch (e.instance.props.className) { case BDFDB.disCN.userpopoutheadertagnonickname: - change = settings.changeInUserPopout; + change = this.settings.places.userPopout; guildId = BDFDB.LibraryModules.LastGuildStore.getGuildId(); changeBackground = true; tagClass = BDFDB.disCN.bottagnametag; break; case BDFDB.disCN.userprofilenametag: - change = settings.changeInUserProfile; + change = this.settings.places.userProfile; guildId = BDFDB.LibraryModules.LastGuildStore.getGuildId(); changeBackground = true; tagClass = BDFDB.disCNS.userprofilebottag + BDFDB.disCN.bottagnametag; break; case BDFDB.disCN.guildsettingsinviteusername: - change = settings.changeInGuildSettings; + change = this.settings.places.guildSettings; break; case BDFDB.disCN.userinfodiscordtag: - change = settings.changeInFriendList; + change = this.settings.places.friendList; tagClass = BDFDB.disCN.bottagnametag; break; } switch (e.instance.props.usernameClass) { case BDFDB.disCN.messagereactionsmodalusername: - change = settings.changeInReactions && !BDFDB.LibraryModules.MemberStore.getNick(BDFDB.LibraryModules.LastGuildStore.getGuildId(), e.instance.props.user.id); + change = this.settings.places.reactions && !BDFDB.LibraryModules.MemberStore.getNick(BDFDB.LibraryModules.LastGuildStore.getGuildId(), e.instance.props.user.id); break; } if (change) { @@ -464,7 +485,7 @@ module.exports = (_ => { } processUserPopout (e) { - if (e.instance.props.user && settings.changeInUserPopout) { + if (e.instance.props.user && this.settings.places.userPopout) { let data = changedUsers[e.instance.props.user.id]; if (!e.returnvalue) { e.instance.props.user = this.getUserData(e.instance.props.user.id, true, true); @@ -492,7 +513,7 @@ module.exports = (_ => { } processUserProfile (e) { - if (e.instance.props.user && settings.changeInUserProfile) { + if (e.instance.props.user && this.settings.places.userProfile) { e.instance.props.user = this.getUserData(e.instance.props.user.id); let data = changedUsers[e.instance.props.user.id]; if (data && (data.removeStatus || data.status || data.statusEmoji)) e.instance.props.customStatusActivity = this.createCustomStatus(data); @@ -500,7 +521,7 @@ module.exports = (_ => { } processUserInfo (e) { - if (e.instance.props.user && settings.changeInFriendList) { + if (e.instance.props.user && this.settings.places.friendList) { e.instance.props.user = this.getUserData(e.instance.props.user.id); if (BDFDB.ReactUtils.isValidElement(e.instance.props.subText)) { let data = changedUsers[e.instance.props.user.id]; @@ -514,7 +535,7 @@ module.exports = (_ => { } processNowPlayingHeader (e) { - if (BDFDB.ObjectUtils.is(e.instance.props.priorityUser) && e.instance.props.priorityUser.user && settings.changeInFriendList) { + if (BDFDB.ObjectUtils.is(e.instance.props.priorityUser) && e.instance.props.priorityUser.user && this.settings.places.friendList) { if (!e.returnvalue) { let titleIsName = e.instance.props.priorityUser.user.username == e.instance.props.title; e.instance.props.priorityUser.user = this.getUserData(e.instance.props.priorityUser.user.id); @@ -528,7 +549,7 @@ module.exports = (_ => { } processVoiceUser (e) { - if (e.instance.props.user && settings.changeInVoiceChat) { + if (e.instance.props.user && this.settings.places.voiceChat) { if (!e.returnvalue) { e.instance.props.user = this.getUserData(e.instance.props.user.id); let data = changedUsers[e.instance.props.user.id]; @@ -545,7 +566,7 @@ module.exports = (_ => { } processAccount (e) { - if (e.instance.props.currentUser && settings.changeInUserAccount) { + if (e.instance.props.currentUser && this.settings.places.userAccount) { let data = changedUsers[e.instance.props.currentUser.id]; if (!e.returnvalue) { e.instance.props.currentUser = this.getUserData(e.instance.props.currentUser.id); @@ -569,7 +590,7 @@ module.exports = (_ => { } processPrivateChannelEmptyMessage (e) { - if (e.instance.props.channel && e.instance.props.channel.isDM() && settings.changeInChatWindow) { + if (e.instance.props.channel && e.instance.props.channel.isDM() && this.settings.places.chatWindow) { let recipientId = e.instance.props.channel.getRecipientId(); let name = this.getUserData(recipientId).username; let avatar = BDFDB.ReactUtils.findChild(e.returnvalue.props.children, {props: "src"}); @@ -588,9 +609,9 @@ module.exports = (_ => { } processMessage (e) { - if (settings.changeInChatWindow) { + if (this.settings.places.chatWindow) { let header = e.instance.props.childrenHeader; - if (header && header.props && header.props.message && this.shouldChangeInChat(header.props.message.channel_id)) { + if (header && header.props && header.props.message && this.shouldchat(header.props.message.channel_id)) { let data = changedUsers[header.props.message.author.id]; if (data) { let color1 = data.color1 && data.useRoleColor && (BDFDB.LibraryModules.MemberStore.getMember((BDFDB.LibraryModules.ChannelStore.getChannel(header.props.message.channel_id) || {}).guild_id, header.props.message.author.id) || {}).colorString || data.color1; @@ -600,7 +621,7 @@ module.exports = (_ => { } } let content = e.instance.props.childrenMessageContent; - if (content && content.type && content.type.type && content.props.message && this.shouldChangeInChat(content.props.message.channel_id)) { + if (content && content.type && content.type.type && content.props.message && this.shouldchat(content.props.message.channel_id)) { let data = changedUsers[content.props.message.author.id]; if (data) { let messageColor = data.color5 || (BDFDB.BDUtils.getSettings(BDFDB.BDUtils.settingsIds.coloredText) && (data.color1 && data.useRoleColor && (BDFDB.LibraryModules.MemberStore.getMember((BDFDB.LibraryModules.ChannelStore.getChannel(content.props.message.channel_id) || {}).guild_id, content.props.message.author.id) || {}).colorString || data.color1)); @@ -612,7 +633,7 @@ module.exports = (_ => { } } let repliedMessage = e.instance.props.childrenRepliedMessage; - if (repliedMessage && repliedMessage.props && repliedMessage.props.children && repliedMessage.props.children.props && repliedMessage.props.children.props.referencedMessage && repliedMessage.props.children.props.referencedMessage.message && this.shouldChangeInChat(repliedMessage.props.children.props.referencedMessage.message.channel_id)) { + if (repliedMessage && repliedMessage.props && repliedMessage.props.children && repliedMessage.props.children.props && repliedMessage.props.children.props.referencedMessage && repliedMessage.props.children.props.referencedMessage.message && this.shouldchat(repliedMessage.props.children.props.referencedMessage.message.channel_id)) { let referenceMessage = repliedMessage.props.children.props.referencedMessage.message; let data = changedUsers[referenceMessage.author.id]; if (data) { @@ -626,7 +647,7 @@ module.exports = (_ => { } processMessageUsername (e) { - if (e.instance.props.message && settings.changeInChatWindow && this.shouldChangeInChat(e.instance.props.message.channel_id)) { + if (e.instance.props.message && this.settings.places.chatWindow && this.shouldchat(e.instance.props.message.channel_id)) { let data = changedUsers[e.instance.props.message.author.id]; if (!e.returnvalue) { let message = new BDFDB.DiscordObjects.Message(Object.assign({}, e.instance.props.message, {author: this.getUserData(e.instance.props.message.author.id, true, false, e.instance.props.message.author)})); @@ -660,7 +681,7 @@ module.exports = (_ => { } processMessageContent (e) { - if (e.instance.props.message && settings.changeInChatWindow && this.shouldChangeInChat(e.instance.props.message.channel_id)) { + if (e.instance.props.message && this.settings.places.chatWindow && this.shouldchat(e.instance.props.message.channel_id)) { if (!e.returnvalue) { if (e.instance.props.message.type != BDFDB.DiscordConstants.MessageTypes.DEFAULT && e.instance.props.message.type != BDFDB.DiscordConstants.MessageTypes.REPLY) { let message = new BDFDB.DiscordObjects.Message(Object.assign({}, e.instance.props.message, {author: this.getUserData(e.instance.props.message.author.id, true, false, e.instance.props.message.author)})); @@ -691,7 +712,7 @@ module.exports = (_ => { } processReaction (e) { - if (!settings.changeInReactions || !e.returnvalue || !this.shouldChangeInChat(e.instance.props.message.channel_id)) return; + if (!this.settings.places.reactions || !e.returnvalue || !this.shouldchat(e.instance.props.message.channel_id)) return; if (e.instance.props.reactions && e.instance.props.reactions.length) { let channel = BDFDB.LibraryModules.ChannelStore.getChannel(e.instance.props.message.channel_id); let guildId = null == channel || channel.isPrivate() ? null : channel.getGuildId(); @@ -720,7 +741,7 @@ module.exports = (_ => { } processReactorsComponent (e) { - if (settings.changeInReactions && BDFDB.ArrayUtils.is(e.instance.props.reactors) && this.shouldChangeInChat(e.instance.props.channel.id)) { + if (this.settings.places.reactions && BDFDB.ArrayUtils.is(e.instance.props.reactors) && this.shouldchat(e.instance.props.channel.id)) { if (!e.returnvalue) { for (let i in e.instance.props.reactors) if (!BDFDB.LibraryModules.MemberStore.getNick(e.instance.props.guildId, e.instance.props.reactors[i].id)) e.instance.props.reactors[i] = this.getUserData(e.instance.props.reactors[i].id, true, false, e.instance.props.reactors[i]); } @@ -747,14 +768,21 @@ module.exports = (_ => { } processUserMention (e) { - if (e.instance.props.userId && settings.changeInMentions && changedUsers[e.instance.props.userId] && this.shouldChangeInChat()) { - let mention = BDFDB.ReactUtils.findChild(e.returnvalue, {name: "Mention"}); - if (mention) this.changeMention(mention, changedUsers[e.instance.props.userId]); + if (e.instance.props.userId && this.settings.places.mentions && changedUsers[e.instance.props.userId] && this.shouldchat()) { + if (typeof e.returnvalue.props.children == "function") { + let renderChildren = e.returnvalue.props.children; + e.returnvalue.props.children = (...args) => { + let children = renderChildren(...args); + this.changeMention(BDFDB.ReactUtils.findChild(children, {name: "Mention"}), changedUsers[e.instance.props.userId]); + return children; + }; + } + else this.changeMention(BDFDB.ReactUtils.findChild(e.returnvalue, {name: "Mention"}), changedUsers[e.instance.props.userId]); } } processRichUserMention (e) { - if (e.instance.props.id && settings.changeInMentions && changedUsers[e.instance.props.id] && this.shouldChangeInChat()) { + if (e.instance.props.id && this.settings.places.mentions && changedUsers[e.instance.props.id] && this.shouldchat()) { let data = changedUsers[e.instance.props.id]; let tooltipChildren = BDFDB.ObjectUtils.get(e, "returnvalue.props.text.props.children"); if (tooltipChildren) { @@ -776,6 +804,7 @@ module.exports = (_ => { } changeMention (mention, data) { + if (!mention) return; if (data.name) { if (typeof mention.props.children == "string") mention.props.children = "@" + data.name; else if (BDFDB.ArrayUtils.is(mention.props.children)) { @@ -810,7 +839,7 @@ module.exports = (_ => { } processChannelReply (e) { - if (e.instance.props.reply && e.instance.props.reply.message && settings.changeInChatWindow && this.shouldChangeInChat(e.instance.props.reply.message.channel_id)) { + if (e.instance.props.reply && e.instance.props.reply.message && this.settings.places.chatWindow && this.shouldchat(e.instance.props.reply.message.channel_id)) { if (!e.returnvalue) { let message = new BDFDB.DiscordObjects.Message(Object.assign({}, e.instance.props.reply.message, {author: this.getUserData(e.instance.props.reply.message.author.id)})); let data = changedUsers[e.instance.props.reply.message.author.id]; @@ -828,7 +857,7 @@ module.exports = (_ => { } processMemberListItem (e) { - if (e.instance.props.user && settings.changeInMemberList && this.shouldChangeInChat()) { + if (e.instance.props.user && this.settings.places.memberList && this.shouldchat()) { if (!e.returnvalue) { e.instance.props.user = this.getUserData(e.instance.props.user.id); let data = changedUsers[e.instance.props.user.id]; @@ -854,7 +883,7 @@ module.exports = (_ => { } processAuditLogs (e) { - if (e.instance.props.logs && settings.changeInGuildSettings) { + if (e.instance.props.logs && this.settings.places.guildSettings) { if (!BDFDB.PatchUtils.isPatched(this, e.instance, "renderUserQuickSelectItem")) BDFDB.PatchUtils.patch(this, e.instance, "renderUserQuickSelectItem", {after: e2 => {if (e2.methodArguments[0] && e2.methodArguments[0].user && changedUsers[e2.methodArguments[0].user.id]) { let userName = BDFDB.ReactUtils.findChild(e2.returnValue, {props: [["children", e2.methodArguments[0].label]]}); if (userName) { @@ -868,45 +897,45 @@ module.exports = (_ => { } processAuditLog (e) { - if (e.instance.props.log && settings.changeInGuildSettings) { + if (e.instance.props.log && this.settings.places.guildSettings) { if (e.instance.props.log.user) e.instance.props.log.user = this.getUserData(e.instance.props.log.user.id); if (e.instance.props.log.target && e.instance.props.log.targetType == "USER") e.instance.props.log.target = this.getUserData(e.instance.props.log.target.id); } } processUserHook (e) { - if (e.instance.props.user && settings.changeInGuildSettings) { + if (e.instance.props.user && this.settings.places.guildSettings) { this.changeUserColor(e.returnvalue.props.children[0], e.instance.props.user.id); } } processGuildSettingsEmoji (e) { - if (BDFDB.ArrayUtils.is(e.instance.props.emojis) && settings.changeInGuildSettings) { + if (BDFDB.ArrayUtils.is(e.instance.props.emojis) && this.settings.places.guildSettings) { e.instance.props.emojis = [].concat(e.instance.props.emojis); for (let i in e.instance.props.emojis) e.instance.props.emojis[i] = Object.assign({}, e.instance.props.emojis[i], {user: this.getUserData(e.instance.props.emojis[i].user.id)}); } } processMemberCard (e) { - if (e.instance.props.user && settings.changeInGuildSettings) e.instance.props.user = this.getUserData(e.instance.props.user.id); + if (e.instance.props.user && this.settings.places.guildSettings) e.instance.props.user = this.getUserData(e.instance.props.user.id); } processSettingsInvites (e) { - if (BDFDB.ObjectUtils.is(e.instance.props.invites) && settings.changeInGuildSettings) { + if (BDFDB.ObjectUtils.is(e.instance.props.invites) && this.settings.places.guildSettings) { e.instance.props.invites = Object.assign({}, e.instance.props.invites); for (let id in e.instance.props.invites) e.instance.props.invites[id] = new BDFDB.DiscordObjects.Invite(Object.assign({}, e.instance.props.invites[id], {inviter: this.getUserData(e.instance.props.invites[id].inviter.id)})); } } processGuildSettingsBans (e) { - if (BDFDB.ObjectUtils.is(e.instance.props.bans) && settings.changeInGuildSettings) { + if (BDFDB.ObjectUtils.is(e.instance.props.bans) && this.settings.places.guildSettings) { e.instance.props.bans = Object.assign({}, e.instance.props.bans); for (let id in e.instance.props.bans) e.instance.props.bans[id] = Object.assign({}, e.instance.props.bans[id], {user: this.getUserData(e.instance.props.bans[id].user.id)}); } } processInvitationCard (e) { - if (e.instance.props.user && settings.changeInInviteList) { + if (e.instance.props.user && this.settings.places.inviteList) { if (!e.returnvalue) e.instance.props.user = this.getUserData(e.instance.props.user.id); else { let userName = BDFDB.ReactUtils.findChild(e.returnvalue, {props: [["className", BDFDB.disCN.invitemodalinviterowname]]}); @@ -916,20 +945,20 @@ module.exports = (_ => { } processPrivateChannelRecipientsInvitePopout (e) { - if (BDFDB.ArrayUtils.is(e.instance.props.results) && settings.changeInInviteList) { + if (BDFDB.ArrayUtils.is(e.instance.props.results) && this.settings.places.inviteList) { for (let result of e.instance.props.results) result.user = this.getUserData(result.user.id); } } processInviteModalUserRow (e) { - if (e.instance.props.user && settings.changeInInviteList) { + if (e.instance.props.user && this.settings.places.inviteList) { let userName = BDFDB.ReactUtils.findChild(e.returnvalue, {props: [["className", BDFDB.disCN.searchpopoutddmaddnickname]]}); if (userName) this.changeUserColor(userName, e.instance.props.user.id); } } processTypingUsers (e) { - if (BDFDB.ObjectUtils.is(e.instance.props.typingUsers) && Object.keys(e.instance.props.typingUsers).length && settings.changeInTyping) { + if (BDFDB.ObjectUtils.is(e.instance.props.typingUsers) && Object.keys(e.instance.props.typingUsers).length && this.settings.places.typing) { let users = Object.keys(e.instance.props.typingUsers).filter(id => id != BDFDB.UserUtils.me.id).filter(id => !BDFDB.LibraryModules.RelationshipStore.isBlocked(id)).map(id => BDFDB.LibraryModules.UserStore.getUser(id)).filter(user => user); if (users.length) { let typingText = BDFDB.ReactUtils.findChild(e.returnvalue, {props: [["className", BDFDB.disCN.typingtext]]}); @@ -946,7 +975,7 @@ module.exports = (_ => { } processDirectMessage (e) { - if (e.instance.props.channel && e.instance.props.channel.isDM() && settings.changeInRecentDms) { + if (e.instance.props.channel && e.instance.props.channel.isDM() && this.settings.places.recentDms) { let recipientId = e.instance.props.channel.getRecipientId(); let tooltip = BDFDB.ReactUtils.findChild(e.returnvalue, {name: "ListItemTooltip"}); if (tooltip) tooltip.props.text = this.getUserData(recipientId).username; @@ -963,7 +992,7 @@ module.exports = (_ => { } processPrivateChannel (e) { - if (e.instance.props.user && settings.changeInDmsList && changedUsers[e.instance.props.user.id]) { + if (e.instance.props.user && this.settings.places.dmsList && changedUsers[e.instance.props.user.id]) { if (!e.returnvalue) { let data = changedUsers[e.instance.props.user.id]; if (data.removeStatus || data.status || data.statusEmoji) { @@ -983,7 +1012,7 @@ module.exports = (_ => { } processQuickSwitchUserResult (e) { - if (e.instance.props.user && settings.changeInQuickSwitcher) { + if (e.instance.props.user && this.settings.places.quickSwitcher) { if (!e.returnvalue) e.instance.props.user = this.getUserData(e.instance.props.user.id); else { let userName = BDFDB.ReactUtils.findChild(e.returnvalue, {props: [["className", BDFDB.disCN.quickswitchresultmatch]]}); @@ -997,13 +1026,13 @@ module.exports = (_ => { } processSearchPopoutComponent (e) { - if (BDFDB.ArrayUtils.is(BDFDB.ObjectUtils.get(e, "instance.props.resultsState.autocompletes")) && settings.changeInSearchPopout) { + if (BDFDB.ArrayUtils.is(BDFDB.ObjectUtils.get(e, "instance.props.resultsState.autocompletes")) && this.settings.places.searchPopout) { for (let autocomplete of e.instance.props.resultsState.autocompletes) if (autocomplete && BDFDB.ArrayUtils.is(autocomplete.results)) for (let result of autocomplete.results) if (result.user) result.user = this.getUserData(result.user.id); } } processSearchPopoutUserResult (e) { - if (e.instance.props.result && e.instance.props.result.user && settings.changeInSearchPopout) { + if (e.instance.props.result && e.instance.props.result.user && this.settings.places.searchPopout) { let userName = BDFDB.ReactUtils.findChild(e.returnvalue, {props: [["className", BDFDB.disCN.searchpopoutdisplayednick]]}); if (userName) { let data = changedUsers[e.instance.props.result.user.id]; @@ -1014,7 +1043,7 @@ module.exports = (_ => { } processIncomingCallModal (e) { - if (e.instance.props.channel && settings.changeInDmCalls) { + if (e.instance.props.channel && this.settings.places.dmCalls) { let user = BDFDB.LibraryModules.UserStore.getUser(e.instance.props.channel.id); if (!user) { let channel = BDFDB.LibraryModules.ChannelStore.getChannel(e.instance.props.channel.id); @@ -1034,7 +1063,7 @@ module.exports = (_ => { } processRTCConnection (e) { - if (e.instance.props.channel && e.instance.props.channel.isDM() && settings.changeInRecentDms && typeof e.returnvalue.props.children == "function") { + if (e.instance.props.channel && e.instance.props.channel.isDM() && this.settings.places.recentDms && typeof e.returnvalue.props.children == "function") { let recipientId = e.instance.props.channel.getRecipientId(); let renderChildren = e.returnvalue.props.children; e.returnvalue.props.children = (...args) => { @@ -1050,13 +1079,13 @@ module.exports = (_ => { } processPrivateChannelCallParticipants (e) { - if (BDFDB.ArrayUtils.is(e.instance.props.participants) && settings.changeInDmCalls) { + if (BDFDB.ArrayUtils.is(e.instance.props.participants) && this.settings.places.dmCalls) { for (let participant of e.instance.props.participants) if (participant && participant.user) participant.user = this.getUserData(participant.user.id, true, true); } } processChannelCall (e) { - if (BDFDB.ArrayUtils.is(e.instance.props.participants) && settings.changeInDmCalls) { + if (BDFDB.ArrayUtils.is(e.instance.props.participants) && this.settings.places.dmCalls) { for (let participant of e.instance.props.participants) if (participant && participant.user) participant.user = this.getUserData(participant.user.id); } } @@ -1083,15 +1112,15 @@ module.exports = (_ => { let title = document.head.querySelector("title"); if (title && channel && channel.isDM()) { let user = BDFDB.LibraryModules.UserStore.getUser(channel.recipients[0]); - if (user) BDFDB.DOMUtils.setText(title, "@" + this.getUserData(user.id, settings.changeInAppTitle).username); + if (user) BDFDB.DOMUtils.setText(title, "@" + this.getUserData(user.id, this.settings.places.appTitle).username); } } - shouldChangeInChat (channelId) { - if (settings.changeInServers && settings.changeInDms) return true; + shouldchat (channelId) { + if (this.settings.types.servers && this.settings.types.dms) return true; let channel = BDFDB.LibraryModules.ChannelStore.getChannel(channelId || BDFDB.LibraryModules.LastChannelStore.getChannelId()); let isDm = channel && (channel.isDM() || channel.isGroupDM()); - if (channel && (settings.changeInServers && !isDm || settings.changeInDms && isDm)) return true; + if (channel && (this.settings.types.servers && !isDm || this.settings.types.dms && isDm)) return true; return false; } diff --git a/Plugins/RemoveNicknames/RemoveNicknames.plugin.js b/Plugins/RemoveNicknames/RemoveNicknames.plugin.js index 6c7ee7f948..92fb6a484d 100644 --- a/Plugins/RemoveNicknames/RemoveNicknames.plugin.js +++ b/Plugins/RemoveNicknames/RemoveNicknames.plugin.js @@ -2,7 +2,7 @@ * @name RemoveNicknames * @author DevilBro * @authorId 278543574059057154 - * @version 1.3.8 + * @version 1.3.9 * @description Replaces Nicknames with Accountnames * @invite Jx3TjNS * @donate https://www.paypal.me/MircoWittrien @@ -17,7 +17,7 @@ module.exports = (_ => { "info": { "name": "RemoveNicknames", "author": "DevilBro", - "version": "1.3.8", + "version": "1.3.9", "description": "Replaces Nicknames with Accountnames" }, "changeLog": { @@ -64,24 +64,24 @@ module.exports = (_ => { template.content.firstElementChild.querySelector("a").addEventListener("click", this.downloadLibrary); return template.content.firstElementChild; } - } : (([Plugin, BDFDB]) => { - var settings = {}; - + } : (([Plugin, BDFDB]) => { return class RemoveNicknames extends Plugin { onLoad () { this.defaults = { - settings: { - replaceOwn: {value: false, inner: false, description: "Replace your own Name"}, - replaceBots: {value: true, inner: false, description: "Replace the Nickname of Bots"}, - addNickname: {value: false, inner: false, description: "Add Nickname as Parentheses"}, - swapPositions: {value: false, inner: false, description: "Swap the Position of Username and Nickname"}, - changeInChatWindow: {value: true, inner: true, description: "Messages"}, - changeInReactions: {value: true, inner: true, description: "Reactions"}, - changeInMentions: {value: true, inner: true, description: "Mentions"}, - changeInVoiceChat: {value: true, inner: true, description: "Voice Channels"}, - changeInMemberList: {value: true, inner: true, description: "Member List"}, - changeInTyping: {value: true, inner: true, description: "Typing List"}, - changeInAutoComplete: {value: true, inner: true, description: "Autocomplete Menu"} + general: { + replaceOwn: {value: false, description: "Replace your own Name"}, + replaceBots: {value: true, description: "Replace the Nickname of Bots"}, + addNickname: {value: false, description: "Add Nickname as Parentheses"}, + swapPositions: {value: false, description: "Swap the Position of Username and Nickname"}, + }, + places: { + chat: {value: true, description: "Messages"}, + reactions: {value: true, description: "Reactions"}, + mentions: {value: true, description: "Mentions"}, + voiceChat: {value: true, description: "Voice Channels"}, + memberList: {value: true, description: "Member List"}, + typing: {value: true, description: "Typing List"}, + autocompletes: {value: true, description: "Autocomplete Menu"} } }; @@ -117,21 +117,34 @@ module.exports = (_ => { } getSettingsPanel (collapseStates = {}) { - let settingsPanel, settingsItems = [], innerItems = []; - - for (let key in settings) (!this.defaults.settings[key].inner ? settingsItems : innerItems).push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, { - type: "Switch", - plugin: this, - keys: ["settings", key], - label: this.defaults.settings[key].description, - value: settings[key] - })); - settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, { - title: "Remove Nicknames in:", - children: innerItems - })); - - return settingsPanel = BDFDB.PluginUtils.createSettingsPanel(this, settingsItems); + let settingsPanel; + return settingsPanel = BDFDB.PluginUtils.createSettingsPanel(this, { + collapseStates: collapseStates, + children: _ => { + let settingsItems = []; + + settingsItems.push(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] + }))); + + settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, { + title: "Remove Nicknames in:", + children: Object.keys(this.defaults.places).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, { + type: "Switch", + plugin: this, + keys: ["places", key], + label: this.defaults.places[key].description, + value: this.settings.places[key] + })) + })); + + return settingsItems; + } + }); } onSettingsClosed (e) { @@ -142,28 +155,26 @@ module.exports = (_ => { } forceUpdateAll () { - settings = BDFDB.DataUtils.get(this, "settings"); - BDFDB.PatchUtils.forceAllUpdates(this); BDFDB.MessageUtils.rerenderAll(); } processAutocompleteUserResult (e) { - if (e.instance.props.user && e.instance.props.nick && settings.changeInAutoComplete) { + if (e.instance.props.user && e.instance.props.nick && this.settings.places.autocompletes) { let newName = this.getNewName(e.instance.props.user); if (newName) e.instance.props.nick = newName; } } processVoiceUser (e) { - if (e.instance.props.user && e.instance.props.nick && settings.changeInVoiceChat) { + if (e.instance.props.user && e.instance.props.nick && this.settings.places.voiceChat) { let newName = this.getNewName(e.instance.props.user); if (newName) e.instance.props.nick = newName; } } processTypingUsers (e) { - if (BDFDB.ObjectUtils.is(e.instance.props.typingUsers) && Object.keys(e.instance.props.typingUsers).length && settings.changeInTyping) { + if (BDFDB.ObjectUtils.is(e.instance.props.typingUsers) && Object.keys(e.instance.props.typingUsers).length && this.settings.places.typing) { let users = Object.keys(e.instance.props.typingUsers).filter(id => id != BDFDB.UserUtils.me.id).filter(id => !BDFDB.LibraryModules.RelationshipStore.isBlocked(id)).map(id => BDFDB.LibraryModules.UserStore.getUser(id)).filter(user => user); if (users.length) { let [children, index] = BDFDB.ReactUtils.findParent(e.returnvalue, {props: [["className", BDFDB.disCN.typingtext]]}); @@ -201,36 +212,49 @@ module.exports = (_ => { } processUserMention (e) { - if (e.instance.props.userId && settings.changeInMentions) { - let mention = BDFDB.ReactUtils.findChild(e.returnvalue, {name: "Mention"}); - let newName = mention && this.getNewName(BDFDB.LibraryModules.UserStore.getUser(e.instance.props.userId)); - if (newName) mention.props.children = "@" + newName; + if (e.instance.props.userId && this.settings.places.mentions) { + let newName = this.getNewName(BDFDB.LibraryModules.UserStore.getUser(e.instance.props.userId)); + if (!newName) return; + if (typeof e.returnvalue.props.children == "function") { + let renderChildren = e.returnvalue.props.children; + e.returnvalue.props.children = (...args) => { + let children = renderChildren(...args); + this.changeMention(BDFDB.ReactUtils.findChild(children, {name: "Mention"}), newName); + return children; + }; + } + else this.changeMention(BDFDB.ReactUtils.findChild(e.returnvalue, {name: "Mention"}), newName); } } processRichUserMention (e) { - if (e.instance.props.id && settings.changeInMentions && typeof e.returnvalue.props.children == "function") { + if (e.instance.props.id && this.settings.places.mentions && typeof e.returnvalue.props.children == "function") { let newName = this.getNewName(BDFDB.LibraryModules.UserStore.getUser(e.instance.props.id)); if (newName) { let renderChildren = e.returnvalue.props.children; e.returnvalue.props.children = (...args) => { let children = renderChildren(...args); - children.props.children = "@" + newName; + this.changeMention(children, newName); return children; }; } } } + + changeMention (mention, newName) { + if (!mention) return; + mention.props.children = "@" + newName; + } processChannelReply (e) { - if (e.instance.props.reply && e.instance.props.reply.message && settings.changeInChatWindow) { + if (e.instance.props.reply && e.instance.props.reply.message && this.settings.places.chat) { let newName = this.getNewName(e.instance.props.reply.message.author); if (newName) e.instance.props.reply.message = new BDFDB.DiscordObjects.Message(Object.assign({}, e.instance.props.reply.message, {nick: newName})); } } processMemberListItem (e) { - if (e.instance.props.user && e.instance.props.nick && settings.changeInMemberList) { + if (e.instance.props.user && e.instance.props.nick && this.settings.places.memberList) { let newName = this.getNewName(e.instance.props.user); if (newName) e.instance.props.nick = newName; } @@ -242,8 +266,8 @@ module.exports = (_ => { let origUser = BDFDB.LibraryModules.UserStore.getUser(user.id) || {}; let EditUsers = BDFDB.BDUtils.getPlugin("EditUsers", true); let username = EditUsers && EditUsers.getUserData(user, true, false, origUser).username || user.username; - if (!member.nick || user.id == BDFDB.UserUtils.me.id && !settings.replaceOwn || user.bot && !settings.replaceBots) return username != origUser.username ? username : (member.nick || username); - return settings.addNickname ? (settings.swapPositions ? (member.nick + " (" + username + ")") : (username + " (" + member.nick + ")")) : username; + if (!member.nick || user.id == BDFDB.UserUtils.me.id && !this.settings.general.replaceOwn || user.bot && !this.settings.general.replaceBots) return username != origUser.username ? username : (member.nick || username); + return this.settings.general.addNickname ? (this.settings.general.swapPositions ? (member.nick + " (" + username + ")") : (username + " (" + member.nick + ")")) : username; } }; })(window.BDFDB_Global.PluginUtils.buildPlugin(config));