//META{"name":"ReadAllNotificationsButton"}*// class ReadAllNotificationsButton { initConstructor () { this.RANbuttonMarkup = `
read all
`; this.RAMbuttonMarkup = ``; this.defaults = { settings: { includeMuted: {value:false, description:"Include muted Servers (means more API-Requests):"} } }; } getName () {return "ReadAllNotificationsButton";} getDescription () {return "Adds a button to clear all notifications.";} getVersion () {return "1.3.5";} getAuthor () {return "DevilBro";} getSettingsPanel () { if (!this.started || typeof BDFDB !== "object") return; var settings = BDFDB.getAllData(this, "settings"); var settingshtml = `
${this.getName()}
`; for (let key in settings) { settingshtml += `

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

`; } settingshtml += `
`; var settingspanel = $(settingshtml)[0]; BDFDB.initElements(settingspanel); $(settingspanel) .on("click", BDFDB.dotCN.switchinner, () => {this.updateSettings(settingspanel);}); return settingspanel; } //legacy load () {} start () { var libraryScript = null; if (typeof BDFDB !== "object" || typeof BDFDB.isLibraryOutdated !== "function" || BDFDB.isLibraryOutdated()) { libraryScript = document.querySelector('head script[src="https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.js"]'); if (libraryScript) libraryScript.remove(); libraryScript = document.createElement("script"); libraryScript.setAttribute("type", "text/javascript"); libraryScript.setAttribute("src", "https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.js"); document.head.appendChild(libraryScript); } this.startTimeout = setTimeout(() => {this.initialize();}, 30000); if (typeof BDFDB === "object" && typeof BDFDB.isLibraryOutdated === "function") this.initialize(); else libraryScript.addEventListener("load", () => {this.initialize();}); } initialize () { if (typeof BDFDB === "object") { BDFDB.loadMessage(this); var observer = null; observer = new MutationObserver((changes, _) => { changes.forEach( (change, i) => { if (change.addedNodes) { change.addedNodes.forEach((node) => { var mentionspopout = null; if (node && node.tagName && (mentionspopout = node.querySelector(BDFDB.dotCN.recentmentionspopout)) != null) { let filter = node.querySelector(BDFDB.dotCN.recentmentionsmentionfilter); if (filter) { $(this.RAMbuttonMarkup).insertBefore(filter, mentionspopout) .on("click", () => { var loadinterval = setInterval(() => { if (!mentionspopout || !mentionspopout.parentElement) clearInterval(loadinterval); var loadbutton = mentionspopout.querySelector(BDFDB.dotCNS.messagespopouthasmore + "button"); var closebuttons = mentionspopout.querySelectorAll(BDFDB.dotCN.messagespopoutclosebutton); if (!loadbutton) { closebuttons.forEach((btn) => {btn.click();}); clearInterval(loadinterval); } else { closebuttons.forEach((btn,i) => {if (closebuttons.length-1 > i) btn.click();}); loadbutton.click(); } },2000); }); mentionspopout.classList.add("RAM-added"); } } }); } } ); }); BDFDB.addObserver(this, BDFDB.dotCN.popouts, {name:"mentionsPopoutObserver",instance:observer}, {childList: true}); $(this.RANbuttonMarkup).insertBefore(document.querySelector(BDFDB.dotCN.guildseparator)) .on("click", "#RANbutton", () => { let servers = BDFDB.getData("includeMuted", this, "settings") ? BDFDB.readServerList() : BDFDB.readUnreadServerList(); BDFDB.clearReadNotifications(servers); }); $(BDFDB.dotCN.guilds).addClass("RAN-added"); } else { console.error(this.getName() + ": Fatal Error: Could not load BD functions!"); } } stop () { if (typeof BDFDB === "object") { $("#RANbutton-frame, #RAMbutton").remove(); $(".RAN-added").removeClass("RAN-added"); BDFDB.unloadMessage(this); } } // begin of own functions updateSettings (settingspanel) { var settings = {}; for (var input of settingspanel.querySelectorAll(BDFDB.dotCN.switchinner)) { settings[input.value] = input.checked; } BDFDB.saveAllData(settings, this, "settings"); } }