Remove instances not in the redirects list from the enabled list

Closes https://github.com/libredirect/libredirect/issues/489
This commit is contained in:
Hygna 2022-10-17 16:32:19 +01:00
parent aded25f600
commit b5e0a297d8
No known key found for this signature in database
5 changed files with 43 additions and 9 deletions

View File

@ -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,
}

View File

@ -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)

View File

@ -1884,4 +1884,4 @@
"https://diode.zone",
"https://peertube.nomagic.uk"
]
}
}

View File

@ -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()
}
})
})

View File

@ -29,11 +29,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") {
@ -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()
}