diff options
author | ManeraKai <manerakai@protonmail.com> | 2023-05-09 08:58:41 +0300 |
---|---|---|
committer | ManeraKai <manerakai@protonmail.com> | 2023-05-09 08:58:41 +0300 |
commit | e64b39765219eee5aa726280d3e78af662e3a5af (patch) | |
tree | 75c6440a73190dec052f9334d757ccccf4923f72 /src/pages/popup/popup.js | |
parent | Merge pull request #691 from sittaneumayer/options (diff) | |
parent | Some tweaks to the options page (diff) | |
download | libredirect-e64b39765219eee5aa726280d3e78af662e3a5af.zip |
Merge branch 'sittaneumayer-popup'
Diffstat (limited to 'src/pages/popup/popup.js')
-rw-r--r-- | src/pages/popup/popup.js | 168 |
1 files changed, 67 insertions, 101 deletions
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js index 36965bd7..f6d0a4ba 100644 --- a/src/pages/popup/popup.js +++ b/src/pages/popup/popup.js @@ -4,130 +4,96 @@ window.browser = window.browser || window.chrome import servicesHelper from "../../assets/javascripts/services.js" import utils from "../../assets/javascripts/utils.js" +document.getElementById("more-options").addEventListener("click", () => browser.runtime.openOptionsPage()) + +const allSites = document.getElementById("all_sites") +const currSite = document.getElementById("current_site") +const currentSiteDivider = document.getElementById("current_site_divider") + +const config = await utils.getConfig() +const divs = {} + +for (const service in config.services) { + divs[service] = {} + + divs[service].all = allSites.getElementsByClassName(service)[0] + divs[service].current = currSite.getElementsByClassName(service)[0] + + divs[service].all_toggle = allSites.getElementsByClassName(service + "-enabled")[0] + divs[service].current_toggle = currSite.getElementsByClassName(service + "-enabled")[0] + + divs[service].all_toggle.addEventListener("change", async () => { + const options = await utils.getOptions() + options[service].enabled = divs[service].all_toggle.checked + browser.storage.local.set({ options }) + }) + divs[service].current_toggle.addEventListener("change", async () => { + const options = await utils.getOptions() + options[service].enabled = divs[service].current_toggle.checked + browser.storage.local.set({ options }) + }) +} + browser.tabs.query({ active: true, currentWindow: true }, async tabs => { + let url; + + // Set visibility of control buttons if (tabs[0].url) { - const url = new URL(tabs[0].url) + url = new URL(tabs[0].url) servicesHelper.switchInstance(url).then(r => { - if (!r) { - document.getElementById("change_instance_div").style.display = "none" - } - else { - document.getElementById("change_instance").addEventListener("click", - async () => browser.tabs.update({ url: await servicesHelper.switchInstance(url) }) + if (r) { + document.getElementById("change_instance_div").style.display = "" + document.getElementById("change_instance").addEventListener("click", async () => + browser.tabs.update({ url: await servicesHelper.switchInstance(url) }) ) } }) servicesHelper.copyRaw(url, true).then(r => { - if (!r) { - document.getElementById("copy_original_div").style.display = "none" - } - else { - document.getElementById("copy_original").addEventListener("click", () => servicesHelper.copyRaw(url)) + if (r) { + document.getElementById("copy_original_div").style.display = "" + document.getElementById("copy_original").addEventListener("click", () => + servicesHelper.copyRaw(url) + ) } }) servicesHelper.reverse(url).then(r => { - if (!r) { - document.getElementById("redirect_to_original_div").style.display = "none" - } else { - document.getElementById("redirect_to_original").addEventListener("click", () => { - browser.runtime.sendMessage("reverseTab"); - calcButtons() - }) + if (r) { + document.getElementById("redirect_to_original_div").style.display = "" + document.getElementById("redirect_to_original").addEventListener("click", () => + browser.runtime.sendMessage("reverseTab") + ) } }) servicesHelper.redirectAsync(url, "main_frame", null, true).then(r => { - if (!r) { - document.getElementById("redirect_div").style.display = "none" - } else { - document.getElementById("redirect").addEventListener("click", () => { - browser.runtime.sendMessage("redirectTab"); - calcButtons() - }) + if (r) { + document.getElementById("redirect_div").style.display = "" + document.getElementById("redirect").addEventListener("click", () => + browser.runtime.sendMessage("redirectTab") + ) } }) - } else { - document.getElementById("change_instance_div").style.display = "none" - document.getElementById("copy_original_div").style.display = "none" - document.getElementById("redirect_div").style.display = "none" - document.getElementById("redirect_to_original_div").style.display = "none" } -}) -document.getElementById("more-options").addEventListener("click", () => browser.runtime.openOptionsPage()) - -const allSites = document.getElementsByClassName("all_sites")[0] -const currSite = document.getElementsByClassName("current_site")[0] - -const config = await utils.getConfig() + const options = await utils.getOptions() -let divs = {} -for (const service in config.services) { - divs[service] = {} - divs[service].toggle = {} - divs[service].current = currSite.getElementsByClassName(service)[0] - divs[service].all = allSites.getElementsByClassName(service)[0] - divs[service].toggle.current = currSite.getElementsByClassName(service + "-enabled")[0] - divs[service].toggle.all = allSites.getElementsByClassName(service + "-enabled")[0] -} - -const currentSiteIsFrontend = document.getElementById("current_site_divider") - -browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - let options = await utils.getOptions() - for (const service in config.services) { - if (!options.popupServices.includes(service)) - allSites.getElementsByClassName(service)[0].classList.add("hide") - else - allSites.getElementsByClassName(service)[0].classList.remove("hide") - currSite.getElementsByClassName(service)[0].classList.add("hide") + // Set visibility of all service buttons + for (const service of options.popupServices) { + divs[service].all.classList.remove("hide") + divs[service].all_toggle.checked = options[service].enabled } - for (const service in config.services) { - divs[service].toggle.all.checked = options[service].enabled - divs[service].toggle.current.checked = options[service].enabled - } - - let url - try { - url = new URL(tabs[0].url) - } catch { - currentSiteIsFrontend.classList.add("hide") - return - } - - let service = await servicesHelper.computeService(url, true) - let frontend - let instance - if (service) { - if (typeof service != "string") { - instance = service[2] - frontend = service[1] - service = service[0] - let isCustom = false - for (const network in config.networks) - if (options[frontend].indexOf(instance) > -1) - isCustom = true + // Set visibility of current page service button + if (url) { + const service = await servicesHelper.computeService(url) + if (service) { + divs[service].all.classList.add("hide") + divs[service].current.classList.remove("hide") + divs[service].current_toggle.checked = options[service].enabled + currentSiteDivider.style.display = "" } - divs[service].current.classList.remove("hide") - divs[service].all.classList.add("hide") - } else { - currentSiteIsFrontend.classList.add("hide") } }) -for (const service in config.services) { - divs[service].toggle.all.addEventListener("change", async () => { - let options = await utils.getOptions() - options[service].enabled = divs[service].toggle.all.checked - browser.storage.local.set({ options }) - }) - divs[service].toggle.current.addEventListener("change", async () => { - let options = await utils.getOptions() - options[service].enabled = divs[service].toggle.current.checked - browser.storage.local.set({ options }) - }) -} - for (const a of document.getElementsByTagName("a")) { a.addEventListener("click", e => { if (!a.classList.contains("prevent")) { @@ -135,4 +101,4 @@ for (const a of document.getElementsByTagName("a")) { e.preventDefault() } }) -} \ No newline at end of file +} |