aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/services.js53
-rw-r--r--src/pages/popup/popup.js6
2 files changed, 34 insertions, 25 deletions
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index d84db4fe..279c8c21 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -376,32 +376,41 @@ function redirect(url, type, initiator) {
}
}
-async function computeService(url, returnFrontend) {
- fetch("/config/config.json")
- .then(response => response.text())
- .then(configData => {
- const config = JSON.parse(configData)
- browser.storage.local.get(["redirects", "options"], r => {
- const redirects = r.redirects
- const options = r.options
- for (const service in config.services) {
- if (regexArray(service, url, config)) {
- if (returnFrontend) return [service, null]
- else return service
- } else {
- for (const frontend in config.services[service].frontends) {
- if (all(service, frontend, options, config, redirects).includes(utils.protocolHost(url))) {
- if (returnFrontend) {
- return [service, frontend]
- } else return service
+function computeService(url, returnFrontend) {
+ return new Promise(resolve => {
+ fetch("/config/config.json")
+ .then(response => response.text())
+ .then(configData => {
+ const config = JSON.parse(configData)
+ browser.storage.local.get(["redirects", "options"], r => {
+ const redirects = r.redirects
+ const options = r.options
+ for (const service in config.services) {
+ if (regexArray(service, url, config)) {
+ if (returnFrontend) {
+ resolve([service, null])
+ } else {
+ resolve(service)
+ }
+ return
+ } else {
+ for (const frontend in config.services[service].frontends) {
+ if (all(service, frontend, options, config, redirects).includes(utils.protocolHost(url))) {
+ if (returnFrontend) {
+ resolve([service, frontend])
+ } else {
+ resolve(service)
+ }
+ return
+ }
}
}
}
- }
- // if (returnFrontend) return [null, null]
- // else return null
+ // if (returnFrontend) return [null, null]
+ // else return null
+ })
})
- })
+ })
}
async function switchInstance(url) {
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index 9899e79e..9231f3f5 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -58,7 +58,7 @@ 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) {
+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")
@@ -68,7 +68,7 @@ browser.storage.local.get("options", r => {
divs[service].toggle.all.checked = r.options[service].enabled
divs[service].toggle.current.checked = r.options[service].enabled
}
-
+
let url
try {
url = new URL(tabs[0].url)
@@ -77,7 +77,7 @@ browser.storage.local.get("options", r => {
document.getElementById("unify_div").style.display = "none"
return
}
-
+
let service = await serviceHelper.computeService(url, true)
let frontend
if (service) {