Update ServerFolders.plugin.js

This commit is contained in:
Mirco Wittrien 2019-02-16 11:48:39 +01:00
parent 7620500f79
commit 4331204484
1 changed files with 36 additions and 27 deletions

View File

@ -3,7 +3,7 @@
class ServerFolders { class ServerFolders {
getName () {return "ServerFolders";} getName () {return "ServerFolders";}
getVersion () {return "6.0.7";} getVersion () {return "6.0.8";}
getAuthor () {return "DevilBro";} getAuthor () {return "DevilBro";}
@ -17,7 +17,7 @@ class ServerFolders {
this.labels = {}; this.labels = {};
this.patchModules = { this.patchModules = {
"Guilds":"componentDidMount", "Guilds":["componentDidMount","componentWillUnmount"],
"Guild":["componentDidMount","componentWillUnmount"], "Guild":["componentDidMount","componentWillUnmount"],
"StandardSidebarView":"componentWillUnmount" "StandardSidebarView":"componentWillUnmount"
}; };
@ -471,23 +471,29 @@ class ServerFolders {
} }
} }
processGuilds (instance, wrapper) { processGuilds (instance, wrapper, methodnames) {
let process = () => { if (methodnames.includes("componentWillUnmount")) {
if (!wrapper.parentElement.querySelector(BDFDB.dotCN.guildswrapper + ".foldercontent")) { BDFDB.removeEles(this.foldercontent, BDFDB.dotCN.guildswrapper + ".foldercontent", ".serverfolder-contextmenu", BDFDB.dotCN.guild + ".folder");
this.foldercontent = BDFDB.htmlToElement(this.folderContentMarkup); this.foldercontent = null;
wrapper.parentElement.insertBefore(this.foldercontent, wrapper.nextElementSibling); }
this.foldercontentguilds = this.foldercontent.querySelector(BDFDB.dotCN.guilds); if (methodnames.includes("componentDidMount")) {
} let process = () => {
let folders = BDFDB.loadAllData(this, "folders"), sortedFolders = []; if (!wrapper.parentElement.querySelector(BDFDB.dotCN.guildswrapper + ".foldercontent")) {
for (let id in folders) sortedFolders[folders[id].position] = folders[id]; this.foldercontent = BDFDB.htmlToElement(this.folderContentMarkup);
for (let data of sortedFolders) if (data && !wrapper.querySelector(BDFDB.dotCN.guild + ".folder#" + data.folderID)) { wrapper.parentElement.insertBefore(this.foldercontent, wrapper.nextElementSibling);
let folderdiv = this.createFolderDiv(data); this.foldercontentguilds = this.foldercontent.querySelector(BDFDB.dotCN.guilds);
this.readIncludedServerList(folderdiv).forEach(guilddiv => {this.hideServer(guilddiv, folderdiv);}); }
} let folders = BDFDB.loadAllData(this, "folders"), sortedFolders = [];
BDFDB.WebModules.forceAllUpdates(this, "Guild"); for (let id in folders) sortedFolders[folders[id].position] = folders[id];
}; for (let data of sortedFolders) if (data && !wrapper.querySelector(BDFDB.dotCN.guild + ".folder#" + data.folderID)) {
if (document.querySelector(BDFDB.dotCNS.guildswrapper + BDFDB.dotCN.guild + ":not(.folder):not(.copy) " + BDFDB.dotCN.guildicon)) process(); let folderdiv = this.createFolderDiv(data);
else setTimeout(process, 5000); this.readIncludedServerList(folderdiv).forEach(guilddiv => {this.hideServer(guilddiv, folderdiv);});
}
BDFDB.WebModules.forceAllUpdates(this, "Guild");
};
if (document.querySelector(BDFDB.dotCNS.guildswrapper + BDFDB.dotCN.guild + ":not(.folder):not(.copy) " + BDFDB.dotCN.guildicon)) process();
else setTimeout(process, 5000);
}
} }
processGuild (instance, wrapper, methodnames) { processGuild (instance, wrapper, methodnames) {
@ -532,7 +538,7 @@ class ServerFolders {
} }
processStandardSidebarView (instance, wrapper) { processStandardSidebarView (instance, wrapper) {
if (this.SettingsUpdated) { if (this.SettingsUpdated && this.foldercontent) {
delete this.SettingsUpdated; delete this.SettingsUpdated;
this.foldercontent.querySelectorAll(BDFDB.dotCN.guild + ".folder").forEach(folderdiv => {this.updateFolderNotifications(folderdiv);}); this.foldercontent.querySelectorAll(BDFDB.dotCN.guild + ".folder").forEach(folderdiv => {this.updateFolderNotifications(folderdiv);});
} }
@ -952,7 +958,7 @@ class ServerFolders {
} }
removeServerFromFolder (info, folderdiv) { removeServerFromFolder (info, folderdiv) {
if (!info || !folderdiv) return; if (!info || !folderdiv || !this.foldercontent) return;
let data = BDFDB.loadData(folderdiv.id, this, "folders"); let data = BDFDB.loadData(folderdiv.id, this, "folders");
if (!data) return; if (!data) return;
BDFDB.removeFromArray(data.servers, info.id); BDFDB.removeFromArray(data.servers, info.id);
@ -964,7 +970,7 @@ class ServerFolders {
} }
removeFolder (folderdiv) { removeFolder (folderdiv) {
if (!folderdiv) return; if (!folderdiv || !this.foldercontent) return;
this.readIncludedServerList(folderdiv).forEach(guilddiv => {this.unhideServer(guilddiv);}); this.readIncludedServerList(folderdiv).forEach(guilddiv => {this.unhideServer(guilddiv);});
BDFDB.removeData(folderdiv.id, this, "folders"); BDFDB.removeData(folderdiv.id, this, "folders");
this.closeFolderContent(folderdiv); this.closeFolderContent(folderdiv);
@ -973,7 +979,7 @@ class ServerFolders {
} }
getFolderOfServer (idOrInfoOrEle) { getFolderOfServer (idOrInfoOrEle) {
if (!idOrInfoOrEle) return; if (!idOrInfoOrEle || !this.foldercontent) return;
let id = Node.prototype.isPrototypeOf(idOrInfoOrEle) ? BDFDB.getServerID(idOrInfoOrEle) : (typeof idOrInfoOrEle == "object" ? idOrInfoOrEle.id : idOrInfoOrEle); let id = Node.prototype.isPrototypeOf(idOrInfoOrEle) ? BDFDB.getServerID(idOrInfoOrEle) : (typeof idOrInfoOrEle == "object" ? idOrInfoOrEle.id : idOrInfoOrEle);
if (!id) return; if (!id) return;
let folders = BDFDB.loadAllData(this, "folders"); let folders = BDFDB.loadAllData(this, "folders");
@ -1018,7 +1024,7 @@ class ServerFolders {
} }
openCloseFolder (folderdiv) { openCloseFolder (folderdiv) {
if (!folderdiv) return; if (!folderdiv || !this.foldercontent) return;
let data = BDFDB.loadData(folderdiv.id, this, "folders"); let data = BDFDB.loadData(folderdiv.id, this, "folders");
if (!data) return; if (!data) return;
let isClosed = !BDFDB.containsClass(folderdiv, "open"); let isClosed = !BDFDB.containsClass(folderdiv, "open");
@ -1045,7 +1051,7 @@ class ServerFolders {
} }
closeFolderContent (folderdiv) { closeFolderContent (folderdiv) {
if (!folderdiv) return; if (!folderdiv || !this.foldercontent) return;
BDFDB.removeClass(folderdiv, "open"); BDFDB.removeClass(folderdiv, "open");
BDFDB.addClass(folderdiv, "closed"); BDFDB.addClass(folderdiv, "closed");
let includedCopies = this.foldercontent.querySelectorAll(`[folder="${folderdiv.id}"]`); let includedCopies = this.foldercontent.querySelectorAll(`[folder="${folderdiv.id}"]`);
@ -1065,7 +1071,7 @@ class ServerFolders {
} }
updateCopyInFolderContent (guilddiv, folderdiv) { updateCopyInFolderContent (guilddiv, folderdiv) {
if (!guilddiv || !folderdiv) return; if (!guilddiv || !folderdiv || !this.foldercontent) return;
if (BDFDB.containsClass(folderdiv, "open")) { if (BDFDB.containsClass(folderdiv, "open")) {
let info = this.GuildUtils.getGuild(BDFDB.getServerID(guilddiv)); let info = this.GuildUtils.getGuild(BDFDB.getServerID(guilddiv));
if (!info) return; if (!info) return;
@ -1083,7 +1089,7 @@ class ServerFolders {
} }
createCopyOfServer (guilddiv, folderdiv) { createCopyOfServer (guilddiv, folderdiv) {
if (!guilddiv || !folderdiv) return; if (!guilddiv || !folderdiv || !this.foldercontent) return;
let info = this.GuildUtils.getGuild(BDFDB.getServerID(guilddiv)); let info = this.GuildUtils.getGuild(BDFDB.getServerID(guilddiv));
if (!info) return; if (!info) return;
let guildcopy = guilddiv.cloneNode(true); let guildcopy = guilddiv.cloneNode(true);
@ -1192,6 +1198,7 @@ class ServerFolders {
} }
updateFolderPositions () { updateFolderPositions () {
if (!this.foldercontent) return;
let serverAndFolders = document.querySelectorAll(`div${BDFDB.dotCN.guildseparator}:not(.folderseparator) ~ div${BDFDB.dotCN.guild}`); let serverAndFolders = document.querySelectorAll(`div${BDFDB.dotCN.guildseparator}:not(.folderseparator) ~ div${BDFDB.dotCN.guild}`);
for (let i = 0; i < serverAndFolders.length; i++) { for (let i = 0; i < serverAndFolders.length; i++) {
let folderdiv = BDFDB.getParentEle(BDFDB.dotCN.guild + ".folder", serverAndFolders[i]); let folderdiv = BDFDB.getParentEle(BDFDB.dotCN.guild + ".folder", serverAndFolders[i]);
@ -1206,6 +1213,7 @@ class ServerFolders {
} }
updateServerPositions (folderdiv) { updateServerPositions (folderdiv) {
if (!this.foldercontent) return;
let data = BDFDB.loadData(folderdiv.id, this, "folders"); let data = BDFDB.loadData(folderdiv.id, this, "folders");
if (data) { if (data) {
let servers = Array.from(this.foldercontent.querySelectorAll(`${BDFDB.dotCN.guild}.copy[folder="${folderdiv.id}"]`)).map(div => {return div.getAttribute("guild");}); let servers = Array.from(this.foldercontent.querySelectorAll(`${BDFDB.dotCN.guild}.copy[folder="${folderdiv.id}"]`)).map(div => {return div.getAttribute("guild");});
@ -1216,6 +1224,7 @@ class ServerFolders {
} }
updateFolderNotifications (folderdiv) { updateFolderNotifications (folderdiv) {
if (!this.foldercontent) return;
let data = BDFDB.loadData(folderdiv.id, this, "folders"); let data = BDFDB.loadData(folderdiv.id, this, "folders");
var a = performance.now(); var a = performance.now();
if (!data) return; if (!data) return;