From 896e1d1f92dbe40dd90d7c606a4250093644cb79 Mon Sep 17 00:00:00 2001 From: Mirco Wittrien Date: Tue, 15 Jan 2019 20:26:33 +0100 Subject: [PATCH] Fixed issue with some vars not updating in ThemeSettings --- Plugins/ThemeSettings/ThemeSettings.plugin.js | 78 +++++++++---------- 1 file changed, 36 insertions(+), 42 deletions(-) diff --git a/Plugins/ThemeSettings/ThemeSettings.plugin.js b/Plugins/ThemeSettings/ThemeSettings.plugin.js index 9f28db0ac9..7d345615e5 100644 --- a/Plugins/ThemeSettings/ThemeSettings.plugin.js +++ b/Plugins/ThemeSettings/ThemeSettings.plugin.js @@ -1,20 +1,20 @@ //META{"name":"ThemeSettings"}*// class ThemeSettings { + getName () {return "ThemeSettings";} + + getVersion () {return "1.0.9";} + + getAuthor () {return "DevilBro";} + + getDescription () {return "Allows you to change Theme Variables within BetterDiscord. Adds a Settings button (similar to Plugins) to customizable Themes in your Themes Page.";} + initConstructor () { this.patchModules = { "V2C_ThemeCard":"componentDidMount" }; } - getName () {return "ThemeSettings";} - - getDescription () {return "Allows you to change Theme Variables within BetterDiscord. Adds a Settings button (similar to Plugins) to customizable Themes in your Themes Page.";} - - getVersion () {return "1.0.8";} - - getAuthor () {return "DevilBro";} - //legacy load () {} @@ -80,7 +80,7 @@ class ThemeSettings { children.push(wrapper.firstChild); wrapper.firstChild.remove(); } - let closebutton = $(`
`)[0]; + let closebutton = BDFDB.htmlToElement(`
`); wrapper.appendChild(closebutton); closebutton.addEventListener("click", () => { wrapper.classList.remove(BDFDB.disCN._reposettingsopen); @@ -111,7 +111,7 @@ class ThemeSettings { if (!this.started || typeof BDFDB !== "object") return; var settingshtml = `
${BDFDB.encodeToHTML(theme.name)}

Update all variables

`; - var settingspanel = $(settingshtml)[0]; + let settingspanel = BDFDB.htmlToElement(settingshtml); var settingspanelinner = settingspanel.querySelector(".DevilBro-settings-inner"); var maxwidth = wrapper.getBoundingClientRect().width - 80; @@ -123,43 +123,37 @@ class ThemeSettings { let varvalue = varstr.shift().trim(); let vardescription = varstr.join("").replace(/\*\/|\/\*/g, "").replace(/:/g, ": ").replace(/: \//g, ":/").replace(/--/g, " --").replace(/\( --/g, "(--").trim(); vardescription = vardescription && vardescription.indexOf("*") == 0 ? vardescription.slice(1) : vardescription; - $(`

${varname[0].toUpperCase() + varname.slice(1)}:

${vardescription ? '
' + BDFDB.encodeToHTML(vardescription) + '
' : ""}
`) - .appendTo(settingspanelinner) - .find(BDFDB.dotCN.input) - .val(varvalue) - .attr("placeholder", varvalue); - } - let dividers = settingspanelinner.querySelectorAll(BDFDB.dotCN.modaldivider); - if (dividers.length) { - dividers[dividers.length - 1].style.setProperty("visibility", "hidden", "important"); - dividers[dividers.length - 1].style.setProperty("margin-top", "0", "important"); + var varcontainer = BDFDB.htmlToElement(`

${varname[0].toUpperCase() + varname.slice(1)}:

${vardescription ? '
' + BDFDB.encodeToHTML(vardescription) + '
' : ""}${vars[vars.length-1] == varstr ? '' : '
'}
`); + let varinput = varcontainer.querySelector(BDFDB.dotCN.input); + varinput.value = varvalue || ""; + varinput.setAttribute("placeholder", varvalue || ""); + settingspanelinner.appendChild(varcontainer); } - BDFDB.initElements(settingspanel); + BDFDB.initElements(settingspanel, this); - $(settingspanel) - .on("click", ".update-button", () => { - let path = this.path.join(this.dir, theme.filename); - let css = this.fs.readFileSync(path).toString(); - if (css) { - let amount = 0; - for (let input of settingspanel.querySelectorAll(BDFDB.dotCN.input)) { - let oldvalue = input.getAttribute("placeholder"); - let newvalue = input.value; - if (newvalue && newvalue.trim() && newvalue != oldvalue) { - let varname = input.getAttribute("option"); - css = css.replace(new RegExp(`--${varname}(\\s*):(\\s*)${oldvalue}`,"g"),`--${varname}$1:$2${newvalue}`); - amount++; - } + BDFDB.addChildEventListener(settingspanel, "click", ".update-button", () => { + let path = this.path.join(this.dir, theme.filename); + let css = this.fs.readFileSync(path).toString(); + if (css) { + let amount = 0; + for (let input of settingspanel.querySelectorAll(BDFDB.dotCN.input)) { + let oldvalue = input.getAttribute("placeholder"); + let newvalue = input.value; + if (newvalue && newvalue.trim() && newvalue != oldvalue) { + let varname = input.getAttribute("option"); + css = css.replace(new RegExp(`--${BDFDB.regEscape(varname)}(\\s*):(\\s*)${BDFDB.regEscape(oldvalue)}`,"g"),`--${varname}$1:$2${newvalue}`); + amount++; } - if (amount > 0) { - this.fs.writeFileSync(path, css); - BDFDB.showToast(`Updated ${amount} variable${amount == 1 ? "" : "s"} in ${theme.filename}`, {type:"success"}); - } - else BDFDB.showToast(`There are no changed variables to be updated in ${theme.filename}`, {type:"warning"}); } - else BDFDB.showToast(`Could not find themefile: ${theme.filename}`, {type:"error"}); - }); + if (amount > 0) { + this.fs.writeFileSync(path, css); + BDFDB.showToast(`Updated ${amount} variable${amount == 1 ? "" : "s"} in ${theme.filename}`, {type:"success"}); + } + else BDFDB.showToast(`There are no changed variables to be updated in ${theme.filename}`, {type:"warning"}); + } + else BDFDB.showToast(`Could not find themefile: ${theme.filename}`, {type:"error"}); + }); wrapper.appendChild(settingspanel); }