//META{"name":"ServerHider"}*// class ServerHider { getName () {return "ServerHider";} getVersion () {return "6.0.1";} getAuthor () {return "DevilBro";} getDescription () {return "Hide Servers in your Serverlist";} initConstructor () { this.labels = {}; this.patchModules = { "Guild":"componentDidMount" }; this.serverHiderModalMarkup = `

REPLACE_modal_header_text

`; this.serverEntryMarkup = `

`; this.serverContextEntryMarkup = `
REPLACE_context_serverhider_text
`; this.serverContextSubMenuMarkup = `
REPLACE_submenu_hideserver_text
REPLACE_submenu_openhidemenu_text
`; } getSettingsPanel () { if (!global.BDFDB || typeof BDFDB != "object" || !BDFDB.loaded || !this.started) return; let settingshtml = `
${this.getName()}
`; settingshtml += `

Reset all Servers.

`; settingshtml += `
`; let settingspanel = BDFDB.htmlToElement(settingshtml); BDFDB.initElements(settingspanel, this); BDFDB.addEventListener(this, settingspanel, "click", ".reset-button", () => { BDFDB.openConfirmModal(this, "Are you sure you want to reset all servers?", () => { BDFDB.removeAllData(this, "servers"); BDFDB.readServerList().forEach(info => {if (!info.div.getAttribute("folder")) BDFDB.toggleEles(info.div, false);}); }); }); return settingspanel; } //legacy load () {} start () { var libraryScript = document.querySelector('head script[src="https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.js"]'); if (!libraryScript || performance.now() - libraryScript.getAttribute("date") > 600000) { if (libraryScript) libraryScript.remove(); libraryScript = document.createElement("script"); libraryScript.setAttribute("type", "text/javascript"); libraryScript.setAttribute("src", "https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.js"); libraryScript.setAttribute("date", performance.now()); libraryScript.addEventListener("load", () => { BDFDB.loaded = true; this.initialize(); }); document.head.appendChild(libraryScript); } else if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) this.initialize(); this.startTimeout = setTimeout(() => {this.initialize();}, 30000); } initialize () { if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) { if (this.started) return; BDFDB.loadMessage(this); if (BDFDB.isPluginEnabled("HideUtils") && !BDFDB.loadData("hideutils", this, "warnings")) BDFDB.openConfirmModal(this, this.name + " is not compartible with the plugin HideUtils by Arashiryuu. You might expierence bugs like Servers that should be hidden by " + this.name + " still being visible in the Guildlist. To avoid this disable the Plugin HideUtils. Press the " + BDFDB.getLibraryStrings().btn_ok_text + "-Button to not show this Message again.", "Warning", () => {BDFDB.saveData("hideutils", true, this, "warnings")}); BDFDB.WebModules.forceAllUpdates(this); } else { console.error(this.getName() + ": Fatal Error: Could not load BD functions!"); } } stop () { if (global.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) { BDFDB.readServerList().forEach(info => {if (!info.div.getAttribute("folder")) BDFDB.toggleEles(info.div, true);}); BDFDB.unloadMessage(this); } } // begin of own functions changeLanguageStrings () { this.serverContextEntryMarkup = this.serverContextEntryMarkup.replace("REPLACE_context_serverhider_text", this.labels.context_serverhider_text); this.serverContextSubMenuMarkup = this.serverContextSubMenuMarkup.replace("REPLACE_submenu_hideserver_text", this.labels.submenu_hideserver_text); this.serverContextSubMenuMarkup = this.serverContextSubMenuMarkup.replace("REPLACE_submenu_openhidemenu_text", this.labels.submenu_openhidemenu_text); this.serverHiderModalMarkup = this.serverHiderModalMarkup.replace("REPLACE_modal_header_text", this.labels.modal_header_text); this.serverHiderModalMarkup = this.serverHiderModalMarkup.replace("REPLACE_btn_ok_text", this.labels.btn_ok_text); this.serverHiderModalMarkup = this.serverHiderModalMarkup.replace("REPLACE_btn_all_text", this.labels.btn_all_text); this.serverEntryMarkup = this.serverEntryMarkup.replace("REPLACE_btn_visible_text", this.labels.btn_visible_text); } onGuildContextMenu (instance, menu) { if (document.querySelector(".DevilBro-modal")) return; if (instance.props && instance.props.target && instance.props.type.indexOf("GUILD_ICON_") == 0 && !menu.querySelector(".serverhider-item")) { let serverContextEntry = BDFDB.htmlToElement(this.serverContextEntryMarkup); menu.appendChild(serverContextEntry); let hideritem = serverContextEntry.querySelector(".serverhider-item"); hideritem.addEventListener("mouseenter", () => { let serverContextSubMenu = BDFDB.htmlToElement(this.serverContextSubMenuMarkup); let openitem = serverContextSubMenu.querySelector(".openhidemenu-item"); openitem.addEventListener("click", () => { instance._reactInternalFiber.return.memoizedProps.closeContextMenu(); this.showServerModal(); }); if (instance.props.guild && !instance.props.target.getAttribute("folder")) { let hideitem = serverContextSubMenu.querySelector(".hideserver-item"); BDFDB.removeClass(hideitem, BDFDB.disCN.contextmenuitemdisabled); hideitem.addEventListener("click", () => { instance._reactInternalFiber.return.memoizedProps.closeContextMenu(); this.toggleServer(instance.props.guild, instance.props.target, false); }); } BDFDB.appendSubMenu(hideritem, serverContextSubMenu); }); } } processGuild (instance, wrapper) { if (instance.props && instance.props.guild) { let hiddenservers = BDFDB.loadData("hiddenservers", this, "hiddenservers") || []; this.toggleServer(instance.props.guild, wrapper, !hiddenservers.includes(instance.props.guild.id)); } } showServerModal () { let serverHiderModal = BDFDB.htmlToElement(this.serverHiderModalMarkup); let container = serverHiderModal.querySelector(".entries"); if (!container) return; BDFDB.addChildEventListener(serverHiderModal, "click", ".btn-all", () => { let firstcheckbox = serverHiderModal.querySelector(".serverhiderCheckbox"); firstcheckbox.click(); serverHiderModal.querySelectorAll(".serverhiderCheckbox").forEach(checkbox => { if (checkbox != firstcheckbox && checkbox.checked != firstcheckbox.checked) checkbox.click(); }); }); for (let info of BDFDB.readServerList()) { if (!info.div.getAttribute("folder")) { if (container.firstElementChild) container.appendChild(BDFDB.htmlToElement(`
`)); let entry = BDFDB.htmlToElement(this.serverEntryMarkup); container.appendChild(entry); let name = entry.querySelector(".serverhiderName"); name.innerText = info.name || ""; name.parentElement.insertBefore(this.createCopyOfServer(info), name); let hidecheckbox = entry.querySelector(".serverhiderCheckbox"); hidecheckbox.checked = !BDFDB.isEleHidden(info.div); hidecheckbox.addEventListener("click", e => { this.toggleServer(info, info.div, e.currentTarget.checked); }); } } BDFDB.appendModal(serverHiderModal); } createCopyOfServer (info) { let serverCopy = info.div.cloneNode(true); BDFDB.toggleEles(serverCopy, true); BDFDB.removeClass(serverCopy, BDFDB.disCN.guildunread, BDFDB.disCN.guildselected); serverCopy.addEventListener("click", e => { e.preventDefault(); info.div.querySelector("a").click(); }); serverCopy.addEventListener("contextmenu", e => {BDFDB.openGuildContextMenu(info.div, e);}); return serverCopy; } toggleServer (info, target, visible) { if (!info || !target) return; let guilddiv = BDFDB.getParentEle(BDFDB.dotCN.guild, target); if (!guilddiv || guilddiv.getAttribute("folder")) return; BDFDB.toggleEles(guilddiv, visible); let hiddenservers = BDFDB.loadData("hiddenservers", this, "hiddenservers") || []; BDFDB.removeFromArray(hiddenservers, info.id); if (!visible) hiddenservers.push(info.id); BDFDB.saveData("hiddenservers", hiddenservers, this, "hiddenservers"); } setLabelsByLanguage () { switch (BDFDB.getDiscordLanguage().id) { case "hr": //croatian return { modal_header_text: "Upravljanje popisom poslužitelja", btn_ok_text: "OK", btn_all_text: "Sve", context_serverhider_text: "Vidljivost poslužitelj", submenu_hideserver_text: "Sakrij poslužitelj", submenu_openhidemenu_text: "Upravljanje popisom poslužitelja" }; case "da": //danish return { modal_header_text: "Styring af Serverliste", btn_ok_text: "OK", btn_all_text: "Alle", context_serverhider_text: "Server synlighed", submenu_hideserver_text: "Skjul Server", submenu_openhidemenu_text: "Styre Serverliste" }; case "de": //german return { modal_header_text: "Verwaltung der Serverliste", btn_ok_text: "OK", btn_all_text: "Alle", context_serverhider_text: "Serversichtbarkeit", submenu_hideserver_text: "Server verstecken", submenu_openhidemenu_text: "Serverliste verwalten" }; case "es": //spanish return { modal_header_text: "Administración de lista de servidores", btn_ok_text: "OK", btn_all_text: "Todo", context_serverhider_text: "Visibilidad del servidor", submenu_hideserver_text: "Ocultar servidor", submenu_openhidemenu_text: "Administrar lista de servidores" }; case "fr": //french return { modal_header_text: "Gestion de la liste des serveurs", btn_ok_text: "OK", btn_all_text: "Tout", context_serverhider_text: "Visibilité du serveur", submenu_hideserver_text: "Cacher le serveur", submenu_openhidemenu_text: "Gérer la liste des serveurs" }; case "it": //italian return { modal_header_text: "Gestione dell'elenco dei server", btn_ok_text: "OK", btn_all_text: "Tutto", context_serverhider_text: "Visibilità del server", submenu_hideserver_text: "Nascondi il server", submenu_openhidemenu_text: "Gestione elenco dei server" }; case "nl": //dutch return { modal_header_text: "Beheer van de Serverlijst", btn_ok_text: "OK", btn_all_text: "Alle", context_serverhider_text: "Server zichtbaarheid", submenu_hideserver_text: "Verberg server", submenu_openhidemenu_text: "Beheer serverlijst" }; case "no": //norwegian return { modal_header_text: "Administrasjon av serverlisten", btn_ok_text: "OK", btn_all_text: "Alle", context_serverhider_text: "Server synlighet", submenu_hideserver_text: "Skjul server", submenu_openhidemenu_text: "Administrer serverliste" }; case "pl": //polish return { modal_header_text: "Zarządzanie listą serwerów", btn_ok_text: "OK", btn_all_text: "Wszystkie", context_serverhider_text: "Widoczność serwera", submenu_hideserver_text: "Ukryj serwer", submenu_openhidemenu_text: "Zarządzaj listą serwerów" }; case "pt-BR": //portuguese (brazil) return { modal_header_text: "Gerenciamento da lista de servidores", btn_ok_text: "OK", btn_all_text: "Todo", context_serverhider_text: "Visibilidade do servidor", submenu_hideserver_text: "Ocultar servidor", submenu_openhidemenu_text: "Gerenciar lista de servidores" }; case "fi": //finnish return { modal_header_text: "Palvelinluettelon hallinta", btn_ok_text: "OK", btn_all_text: "Kaikki", context_serverhider_text: "Palvelimen näkyvyys", submenu_hideserver_text: "Piilota palvelin", submenu_openhidemenu_text: "Hallinnoi palvelinluetteloa" }; case "sv": //swedish return { modal_header_text: "Hantering av serverlistan", btn_ok_text: "OK", btn_all_text: "All", context_serverhider_text: "Server sikt", submenu_hideserver_text: "Dölj server", submenu_openhidemenu_text: "Hantera serverlistan" }; case "tr": //turkish return { modal_header_text: "Sunucu Listesinin Yönetimi", btn_ok_text: "Okey", btn_all_text: "Her", context_serverhider_text: "Sunucu görünürlüğü", submenu_hideserver_text: "Sunucuyu Gizle", submenu_openhidemenu_text: "Sunucu Listesini Yönet" }; case "cs": //czech return { modal_header_text: "Správa seznamu serverů", btn_ok_text: "OK", btn_all_text: "Vše", context_serverhider_text: "Viditelnost serveru", submenu_hideserver_text: "Skrýt server", submenu_openhidemenu_text: "Správa seznamu serverů" }; case "bg": //bulgarian return { modal_header_text: "Управление на списъка със сървъри", btn_ok_text: "Добре", btn_all_text: "Bсичко", context_serverhider_text: "Видимост на сървъра", submenu_hideserver_text: "Скриване на сървър", submenu_openhidemenu_text: "Управление на списъка със сървъри" }; case "ru": //russian return { modal_header_text: "Управление списком серверов", btn_ok_text: "ОК", btn_all_text: "Все", context_serverhider_text: "Видимость сервера", submenu_hideserver_text: "Скрыть сервер", submenu_openhidemenu_text: "Управление списком серверов" }; case "uk": //ukrainian return { modal_header_text: "Управління списком серверів", btn_ok_text: "Добре", btn_all_text: "Все", context_serverhider_text: "Видимість сервера", submenu_hideserver_text: "Сховати сервер", submenu_openhidemenu_text: "Управління списком серверів" }; case "ja": //japanese return { modal_header_text: "サーバリストの管理", btn_ok_text: "はい", btn_all_text: "すべて", context_serverhider_text: "サーバーの可視性", submenu_hideserver_text: "サーバーを隠す", submenu_openhidemenu_text: "サーバーリストを管理する" }; case "zh-TW": //chinese (traditional) return { modal_header_text: "管理服务器列表", btn_ok_text: "好", btn_all_text: "所有", context_serverhider_text: "服務器可見性", submenu_hideserver_text: "隐藏服务器", submenu_openhidemenu_text: "管理服务器列表" }; case "ko": //korean return { modal_header_text: "서버 목록 관리", btn_ok_text: "승인", btn_all_text: "모든", context_serverhider_text: "서버 가시성", submenu_hideserver_text: "서버 숨기기", submenu_openhidemenu_text: "서버 목록 관리" }; default: //default: english return { modal_header_text: "Managing Serverlist", btn_ok_text: "OK", btn_all_text: "All", context_serverhider_text: "Server Visibility", submenu_hideserver_text: "Hide Server", submenu_openhidemenu_text: "Manage Serverlist" }; } } }