diff options
-rw-r--r-- | src/assets/javascripts/services.js | 52 | ||||
-rw-r--r-- | src/manifest.json | 2 | ||||
-rw-r--r-- | src/pages/background/background.js | 4 | ||||
-rw-r--r-- | src/pages/popup/popup.js | 135 |
4 files changed, 87 insertions, 106 deletions
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js index 6a7751dc..f7e57d7f 100644 --- a/src/assets/javascripts/services.js +++ b/src/assets/javascripts/services.js @@ -49,7 +49,6 @@ function redirect(url, type, initiator, forceRedirection) { let frontend for (const service in config.services) { if (!forceRedirection && !options[service].enabled) continue - if (config.services[service].embeddable && type != options[service].redirectType && options[service].redirectType != "both") continue if (!config.services[service].embeddable && type != "main_frame") continue @@ -57,21 +56,20 @@ function redirect(url, type, initiator, forceRedirection) { if (!regexArray(service, url, config, frontend)) continue - if (initiator && all(service, null, options, config).includes(initiator.origin)) return "BYPASSTAB" - - let instanceList = [] - for (const network in options[frontend]) { - instanceList.push(...options[frontend]) - } + if ( + initiator + && + options[frontend].includes(initiator.origin) + ) return "BYPASSTAB" - console.log(frontend, instanceList) + let instanceList = options[frontend] if (instanceList.length === 0) return randomInstance = utils.getRandomInstance(instanceList) break } - if (!frontend || !randomInstance) return + if (!randomInstance) return // Here is a (temperory) space for defining constants required in 2 or more switch cases. const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/ @@ -399,7 +397,7 @@ function computeService(url, returnFrontend) { return } else { for (const frontend in config.services[service].frontends) { - if (all(service, frontend, options, config).some(val => val.includes(utils.protocolHost(url)))) { + if (all(service, frontend, options, config).includes(utils.protocolHost(url))) { if (returnFrontend) resolve([service, frontend, utils.protocolHost(url)]) else @@ -418,27 +416,16 @@ function _switchInstance(url) { await init() const protocolHost = utils.protocolHost(url) for (const service in config.services) { - if (!all(service, undefined, options, config).some(val => val.includes(protocolHost))) continue - - let instancesList = [] - let frontend - if (!options[service].frontend) - frontend = Object.keys(config.services[service].frontends)[0] - else - frontend = options[service].frontend - - instancesList = [...options[frontend]] - - let oldInstance - const i = instancesList.indexOf(protocolHost) - if (i > -1) { - instancesList.splice(i, 1) - } + let frontend = options[service].frontend ?? Object.keys(config.services[service].frontends)[0] + let instancesList = [...options[frontend]] + if (!instancesList.includes(protocolHost)) continue + + instancesList.splice(instancesList.indexOf(protocolHost), 1) if (instancesList.length === 0) { resolve() return } - console.log(instancesList) + const randomInstance = utils.getRandomInstance(instancesList) const newUrl = `${randomInstance}${url.pathname}${url.search}` resolve(newUrl) @@ -452,11 +439,10 @@ function reverse(url, urlString) { return new Promise(async resolve => { await init() url = new URL(url) - let protocolHost - protocolHost = utils.protocolHost(url) - + let protocolHost = utils.protocolHost(url) for (const service in config.services) { - if (!all(service, undefined, options, config).some(val => val.includes(protocolHost))) continue + let frontend = options[service].frontend ?? Object.keys(config.services[service].frontends)[0] + if (options[frontend].includes(protocolHost)) continue switch (service) { case "youtube": @@ -511,7 +497,7 @@ function initDefaults() { options['theme'] = "detect" options['popupServices'] = ["youtube", "twitter", "tiktok", "imgur", "reddit", "quora", "translate", "maps"] - options['invidious'] = ['https://inv.vern.cc/'] + options['invidious'] = ['https://inv.vern.cc'] options['piped'] = ['https://piped.video'] options['pipedMaterial'] = ['https://piped-material.xn--17b.net'] options['cloudtube'] = ['https://tube.cadence.moe'] @@ -525,7 +511,7 @@ function initDefaults() { options['libremdb'] = ['https://libremdb.iket.me'] options['simplytranslate'] = ['https://simplytranslate.org'] options['linvgatranslate'] = ['https://lingva.ml'] - options['searxng'] = ['https://sx.vern.cc/'] + options['searxng'] = ['https://sx.vern.cc'] options['rimgo'] = ['https://rimgo.vern.cc'] options['librarian'] = ['https://lbry.vern.cc'] options['beatbump'] = ['https://beatbump.ml'] diff --git a/src/manifest.json b/src/manifest.json index 1b5a9634..bf636106 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_extensionName__", "description": "__MSG_extensionDescription__", - "version": "3.0.0", + "version": "2.5.0", "manifest_version": 2, "browser_specific_settings": { "gecko": { diff --git a/src/pages/background/background.js b/src/pages/background/background.js index dbc788f2..d5160ff2 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -15,7 +15,9 @@ browser.runtime.onInstalled.addListener(async details => { } } else if (details.reason == "update") { - await servicesHelper.upgradeOptions() + if (details.previousVersion == '2.3.4') { + await servicesHelper.upgradeOptions() + } // await servicesHelper.processUpdate() } browser.runtime.openOptionsPage() diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js index 56c0c3cc..560aea9d 100644 --- a/src/pages/popup/popup.js +++ b/src/pages/popup/popup.js @@ -4,20 +4,18 @@ window.browser = window.browser || window.chrome import servicesHelper from "../../assets/javascripts/services.js" import utils from "../../assets/javascripts/utils.js" -let config, - divs = {} - -config = await utils.getConfig() - servicesHelper.switchInstance().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() }) - }) + 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() }) + }) }) servicesHelper.copyRaw(true).then(r => { - if (!r) document.getElementById("copy_raw_div").style.display = "none" + if (!r) + document.getElementById("copy_raw_div").style.display = "none" else { const copy_raw = document.getElementById("copy_raw") copy_raw.addEventListener("click", () => servicesHelper.copyRaw(false, copy_raw)) @@ -28,78 +26,73 @@ document.getElementById("more-options").addEventListener("click", () => browser. const allSites = document.getElementsByClassName("all_sites")[0] const currSite = document.getElementsByClassName("current_site")[0] -function setDivs() { - return new Promise(resolve => { - 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] - } - resolve() - }) -} +const config = await utils.getConfig() -await setDivs() +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.storage.local.get(["options"], r => { - browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - for (const service in config.services) { - if (!r.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") - } +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") + } - for (const service in config.services) { - divs[service].toggle.all.checked = r.options[service].enabled - divs[service].toggle.current.checked = r.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 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 (r.options[frontend].indexOf(instance) > -1) isCustom = true - } - divs[service].current.classList.remove("hide") - divs[service].all.classList.add("hide") - } else { - currentSiteIsFrontend.classList.add("hide") + 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 } - }) + 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", () => { - browser.storage.local.get("options", r => { - let options = r.options - options[service].enabled = divs[service].toggle.all.checked - browser.storage.local.set({ options }) - }) + 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", () => { - browser.storage.local.get("options", r => { - let options = r.options - options[service].enabled = divs[service].toggle.current.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 }) }) } @@ -110,4 +103,4 @@ for (const a of document.getElementsByTagName("a")) { e.preventDefault() } }) -} +} \ No newline at end of file |