import utils from "../../assets/javascripts/utils.js" import localise from "../../assets/javascripts/localise.js" let config, options, divs = {} for (const a of document.getElementById("links").getElementsByTagName("a")) { a.addEventListener("click", e => { const path = a.getAttribute("href").replace("#", "") loadPage(path) e.preventDefault() }) } await new Promise(resolve => { fetch("/config.json").then(response => response.text()) .then(data => { config = JSON.parse(data) resolve() }) }) await new Promise(resolve => { browser.storage.local.get("options", r => { options = r.options resolve() }) }) function changeFrontendsSettings(service) { for (const frontend in config.services[service].frontends) { if (config.services[service].frontends[frontend].instanceList) { const frontendDiv = document.getElementById(frontend) if (typeof divs[service].frontend !== "undefined") { if (frontend == divs[service].frontend.value) { frontendDiv.style.display = "block" } else { frontendDiv.style.display = "none" } } } } } function loadPage(path) { for (const section of document.getElementById("pages").getElementsByTagName("section")) section.style.display = "none" document.getElementById(`${path}_page`).style.display = "block" for (const a of document.getElementById("links").getElementsByTagName("a")) if (a.getAttribute("href") == `#${path}`) a.classList.add("selected") else a.classList.remove("selected") let stateObj = { id: "100" } window.history.pushState(stateObj, "Page 2", `/pages/options/index.html#${path}`) if (path != 'general' && path != 'about') { const service = path; divs[service] = {} for (const option in config.services[service].options) { divs[service][option] = document.getElementById(`${service}-${option}`) if (typeof config.services[service].options[option] == "boolean") divs[service][option].checked = options[service][option] else divs[service][option].value = options[service][option] divs[service][option].addEventListener("change", () => { browser.storage.local.get("options", r => { let options = r.options if (typeof config.services[service].options[option] == "boolean") options[service][option] = divs[service][option].checked else options[service][option] = divs[service][option].value browser.storage.local.set({ options }) changeFrontendsSettings(service) }) }) } const frontend_name_element = document.getElementById(`${service}_page`).getElementsByClassName("frontend_name")[0] if (divs[service].frontend) { frontend_name_element.href = config.services[service].frontends[divs[service].frontend.value].url } else { frontend_name_element.href = Object.values(config.services[service].frontends)[0].url } if (Object.keys(config.services[service].frontends).length > 1) { changeFrontendsSettings(service) } for (const frontend in config.services[service].frontends) { if (config.services[service].frontends[frontend].instanceList) { processDefaultCustomInstances(frontend, config.networks, document) } } } } async function processDefaultCustomInstances(frontend, networks, document) { let customInstances = [] let options await new Promise(async resolve => browser.storage.local.get(["options"], r => { customInstances = r.options[frontend] options = r.options resolve() }) ) !async function () { const blacklist = utils.getBlacklist() const redirects = utils.getList() for (const network in networks) { if (redirects[frontend][network].length > 0) { document.getElementById(frontend).getElementsByClassName(network)[0].getElementsByClassName("checklist")[0].innerHTML = [ `