aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHygna <hygna@proton.me>2022-10-17 16:32:19 +0100
committerHygna <hygna@proton.me>2022-10-17 16:33:57 +0100
commitb5e0a297d83035c371758131fd0182afa2115ff0 (patch)
tree01398606dcc09422dbbe03f98cbb5e799d182f5a
parentTranslated using Weblate (Galician) (diff)
downloadlibredirect-b5e0a297d83035c371758131fd0182afa2115ff0.zip
Remove instances not in the redirects list from the enabled list
Closes https://github.com/libredirect/libredirect/issues/489
Diffstat (limited to '')
-rw-r--r--src/assets/javascripts/services.js29
-rw-r--r--src/assets/javascripts/utils.js3
-rw-r--r--src/instances/data.json2
-rw-r--r--src/pages/background/background.js2
-rw-r--r--src/pages/options/widgets/general.js16
5 files changed, 43 insertions, 9 deletions
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index 92d891d7..7b73d9d5 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -784,6 +784,34 @@ function modifyContentSecurityPolicy(details) {
}
}
+function processEnabledInstanceList() {
+ 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 => {
+ let options = r.options
+ for (const service in config.services) {
+ for (const frontend in config.services[service].frontends) {
+ if (config.services[service].frontends[frontend].instanceList) {
+ for (const network in config.networks) {
+ for (const instance of options[frontend][network].enabled) {
+ let i = redirects[frontend][network].indexOf(instance)
+ if (i < 0) options[frontend][network].enabled.splice(i, 1)
+ }
+ }
+ }
+ }
+ }
+ browser.storage.local.set({ options }, () => {
+ resolve()
+ })
+ })
+ })
+ })
+}
+
export default {
redirect,
computeService,
@@ -795,4 +823,5 @@ export default {
upgradeOptions,
processUpdate,
modifyContentSecurityPolicy,
+ processEnabledInstanceList,
}
diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js
index 1f09435c..66a439bf 100644
--- a/src/assets/javascripts/utils.js
+++ b/src/assets/javascripts/utils.js
@@ -46,7 +46,8 @@ function updateInstances() {
await initBlackList()
const instances = JSON.parse(http.responseText)
- servicesHelper.setRedirects(instances)
+ await servicesHelper.setRedirects(instances)
+ await servicesHelper.processEnabledInstanceList()
console.info("Successfully updated Instances")
resolve(true)
diff --git a/src/instances/data.json b/src/instances/data.json
index 61ffd98b..890ac74a 100644
--- a/src/instances/data.json
+++ b/src/instances/data.json
@@ -1884,4 +1884,4 @@
"https://diode.zone",
"https://peertube.nomagic.uk"
]
-} \ No newline at end of file
+}
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 35deb8f9..ad79323f 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -38,11 +38,13 @@ browser.runtime.onInstalled.addListener(details => {
await generalHelper.initDefaults()
await servicesHelper.initDefaults()
await servicesHelper.upgradeOptions()
+ await servicesHelper.processEnabledInstanceList()
}
})
break
default:
await servicesHelper.processUpdate()
+ await servicesHelper.processEnabledInstanceList()
}
})
})
diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js
index 164d9b89..bcc9afed 100644
--- a/src/pages/options/widgets/general.js
+++ b/src/pages/options/widgets/general.js
@@ -31,11 +31,6 @@ async function getConfig() {
function setOption(option, type, event) {
browser.storage.local.get("options", r => {
let options = r.options
- browser.storage.local.set({ options })
- })
-
- browser.storage.local.get("options", r => {
- let options = r.options
if (type == "select") {
options[option] = event.target.options[event.target.options.selectedIndex].value
} else if (type == "checkbox") {
@@ -82,13 +77,20 @@ importSettingsElement.addEventListener("change", () => {
await generalHelper.initDefaults()
await servicesHelper.initDefaults()
await servicesHelper.upgradeOptions()
+ await servicesHelper.processEnabledInstanceList()
location.reload()
})
})
})
)
- } else if ("version" in data) browser.storage.local.set({ options: data }, () => location.reload())
- else {
+ } else if ("version" in data) {
+ let options = data
+ delete options.version
+ browser.storage.local.set({ options: data }, async () => {
+ await servicesHelper.processEnabledInstanceList()
+ location.reload()
+ })
+ } else {
console.log("incompatible settings")
importError()
}