diff --git a/Plugins/ReadAllNotificationsButton/ReadAllNotificationsButton.plugin.js b/Plugins/ReadAllNotificationsButton/ReadAllNotificationsButton.plugin.js index 8c3d06cc91..e560c0fb9b 100644 --- a/Plugins/ReadAllNotificationsButton/ReadAllNotificationsButton.plugin.js +++ b/Plugins/ReadAllNotificationsButton/ReadAllNotificationsButton.plugin.js @@ -3,18 +3,41 @@ class ReadAllNotificationsButton { getName () {return "ReadAllNotificationsButton";} - getVersion () {return "1.3.9";} + getVersion () {return "1.4.0";} getAuthor () {return "DevilBro";} getDescription () {return "Adds a button to clear all notifications.";} initConstructor () { + this.changelog = { + "added":[["Mark DMs as read","You can now also mark DMs as read"],["ContextMenu","Right clicking the 'read all' button now opens a context menu that lets you more freely choose what should be marked as read"]], + "improved":[["Settings","You can now more freely change the left click behaviour of the 'read all' button"]], + }; + this.patchModules = { "Guilds":"componentDidMount", "RecentMentions":"componentDidMount" }; + this.RANcontextMenuMarkup = + `
+
+
+
REPLACE_context_guilds_text
+
+
+
+
REPLACE_context_mutedguilds_text
+
+
+
+
REPLACE_context_dms_text
+
+
+
+
`; + this.RANbuttonMarkup = `
@@ -31,7 +54,9 @@ class ReadAllNotificationsButton { this.defaults = { settings: { - includeMuted: {value:false, description:"Include muted Servers (means more API-Requests):"} + includeGuilds: {value:true, description:"unread Servers"}, + includeMuted: {value:false, description:"muted unread Servers"}, + includeDMs: {value:false, description:"unread DMs"} } }; } @@ -40,14 +65,22 @@ class ReadAllNotificationsButton { if (!global.BDFDB || typeof BDFDB != "object" || !BDFDB.loaded || !this.started) return; var settings = BDFDB.getAllData(this, "settings"); var settingshtml = `
${this.name}
`; + settingshtml += `

When left clicking the button mark following elements as unread:

`; for (let key in settings) { - settingshtml += `

${this.defaults.settings[key].description}

`; + settingshtml += `

${this.defaults.settings[key].description}

`; } + settingshtml += `
`; settingshtml += `
`; let settingspanel = BDFDB.htmlToElement(settingshtml); BDFDB.initElements(settingspanel, this); + + let mutedinput = settingspanel.querySelector(".settings-switch[value='settings includeMuted']").parentElement.parentElement; + BDFDB.toggleEles(mutedinput, settings.includeGuilds); + BDFDB.addEventListener(this, settingspanel, "click", ".settings-switch[value='settings includeGuilds']", e => { + BDFDB.toggleEles(mutedinput, e.currentTarget.checked); + }); return settingspanel; } @@ -95,6 +128,12 @@ class ReadAllNotificationsButton { // begin of own functions + changeLanguageStrings () { + this.RANcontextMenuMarkup = this.RANcontextMenuMarkup.replace("REPLACE_context_guilds_text", this.labels.context_guilds_text); + this.RANcontextMenuMarkup = this.RANcontextMenuMarkup.replace("REPLACE_context_mutedguilds_text", this.labels.context_mutedguilds_text); + this.RANcontextMenuMarkup = this.RANcontextMenuMarkup.replace("REPLACE_context_dms_text", this.labels.context_dms_text); + } + processGuilds (instance, wrapper) { BDFDB.removeEles(".RANbutton-frame"); let guildseparator = wrapper.querySelector(BDFDB.dotCN.guildseparator); @@ -102,7 +141,25 @@ class ReadAllNotificationsButton { let ranbutton = BDFDB.htmlToElement(this.RANbuttonMarkup); guildseparator.parentElement.insertBefore(ranbutton, guildseparator); ranbutton.addEventListener("click", () => { - BDFDB.clearReadNotifications(BDFDB.getData("includeMuted", this, "settings") ? BDFDB.readServerList() : BDFDB.readUnreadServerList()); + let settings = BDFDB.getAllData(this, "settings"); + if (settings.includeGuilds) BDFDB.markGuildAsRead(settings.includeMuted ? BDFDB.readServerList() : BDFDB.readUnreadServerList()); + if (settings.includeDMs) BDFDB.markChannelAsRead(BDFDB.readDmList()); + }); + ranbutton.addEventListener("contextmenu", e => { + let RANcontextMenu = BDFDB.htmlToElement(this.RANcontextMenuMarkup); + RANcontextMenu.querySelector(".readguilds-item").addEventListener("click", () => { + BDFDB.removeEles(RANcontextMenu); + BDFDB.markGuildAsRead(BDFDB.readUnreadServerList()); + }); + RANcontextMenu.querySelector(".readmutedguilds-item").addEventListener("click", () => { + BDFDB.removeEles(RANcontextMenu); + BDFDB.markGuildAsRead(BDFDB.readServerList()); + }); + RANcontextMenu.querySelector(".readdms-item").addEventListener("click", () => { + BDFDB.removeEles(RANcontextMenu); + BDFDB.markChannelAsRead(BDFDB.readDmList()); + }); + BDFDB.appendContextMenu(RANcontextMenu, e); }); BDFDB.addClass(wrapper, "RAN-added"); } @@ -128,5 +185,134 @@ class ReadAllNotificationsButton { instance.loadMore(); setTimeout(() => {this.clearMentions(instance, wrapper);},3000); } + }setLabelsByLanguage () { + switch (BDFDB.getDiscordLanguage().id) { + case "hr": //croatian + return { + context_guilds_text: "Poslužitelji", + context_mutedguilds_text: "Prigušeni Poslužitelji", + context_dms_text: "Prikvacene Izravne" + }; + case "da": //danish + return { + context_guilds_text: "Servere", + context_mutedguilds_text: "Dćmpede Servere", + context_dms_text: "Privat Beskeder" + }; + case "de": //german + return { + context_guilds_text: "Server", + context_mutedguilds_text: "Stummgeschaltete Server", + context_dms_text: "Direktnachrichten" + }; + case "es": //spanish + return { + context_guilds_text: "Servidores", + context_mutedguilds_text: "Servidores silenciados", + context_dms_text: "Mensajes directos" + }; + case "fr": //french + return { + context_guilds_text: "Serveurs", + context_mutedguilds_text: "Serveurs en sourdine", + context_dms_text: "Messages prives" + }; + case "it": //italian + return { + context_guilds_text: "Server", + context_mutedguilds_text: "Server disattivati", + context_dms_text: "Messaggi diretti" + }; + case "nl": //dutch + return { + context_guilds_text: "Servers", + context_mutedguilds_text: "Gedempte Servers", + context_dms_text: "Persoonluke Berichten" + }; + case "no": //norwegian + return { + context_guilds_text: "Servere", + context_mutedguilds_text: "Dempet Servere", + context_dms_text: "Direktemeldinger" + }; + case "pl": //polish + return { + context_guilds_text: "Serwery", + context_mutedguilds_text: "Wyciszone Serwery", + context_dms_text: "Prywatne Wiadomosci" + }; + case "pt-BR": //portuguese (brazil) + return { + context_guilds_text: "Servidores", + context_mutedguilds_text: "Servidores Silenciosos", + context_dms_text: "Mensagens Diretas" + }; + case "fi": //finnish + return { + context_guilds_text: "Palvelimet", + context_mutedguilds_text: "Mykistetyt Palvelimet", + context_dms_text: "Yksityisviestit" + }; + case "sv": //swedish + return { + context_guilds_text: "Servrar", + context_mutedguilds_text: "Dämpade Servrar", + context_dms_text: "Direktmeddelanden" + }; + case "tr": //turkish + return { + context_guilds_text: "Sunucular", + context_mutedguilds_text: "Sessiz Sunucular", + context_dms_text: "Direkt Mesajlar" + }; + case "cs": //czech + return { + context_guilds_text: "Servery", + context_mutedguilds_text: "Tlumené Servery", + context_dms_text: "Prímá Zpráva" + }; + case "bg": //bulgarian + return { + context_guilds_text: "C??????", + context_mutedguilds_text: "?????????? C??????", + context_dms_text: "???????? C????????" + }; + case "ru": //russian + return { + context_guilds_text: "C??????", + context_mutedguilds_text: "O?????????? C??????", + context_dms_text: "?????? ?????????" + }; + case "uk": //ukrainian + return { + context_guilds_text: "C??????", + context_mutedguilds_text: "?????????? C??????", + context_dms_text: "???????? ????????????" + }; + case "ja": //japanese + return { + context_guilds_text: "????", + context_mutedguilds_text: "????????", + context_dms_text: "??????????" + }; + case "zh-TW": //chinese (traditional) + return { + context_guilds_text: "???", + context_mutedguilds_text: "?????", + context_dms_text: "????" + }; + case "ko": //korean + return { + context_guilds_text: "??", + context_mutedguilds_text: "??? ? ??", + context_dms_text: "?? ???" + }; + default: //default: english + return { + context_guilds_text: "Servers", + context_mutedguilds_text: "Muted Servers", + context_dms_text: "Direct Messages" + }; + } } }