From eb3794cdcb5732b4bcfd2d89b3b205fc3960a2fd Mon Sep 17 00:00:00 2001 From: Hygna Date: Sun, 23 Oct 2022 11:33:18 +0100 Subject: [PATCH] Changes: Fixed instance updating Made the instance updater remove frontends & networks not in the current version Fixed CI linter --- .woodpecker.yml | 2 +- src/assets/javascripts/services.js | 86 +++++++++++++++++++----------- src/assets/javascripts/utils.js | 1 - src/config/config.json | 2 +- 4 files changed, 58 insertions(+), 33 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 1ee2cc1..177368e 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -26,7 +26,7 @@ pipeline: event: [push, pull_request] path: exclude: ["src/instances/**"] - include: ["src/"] + include: ["src/**"] commands: - npm i - npx web-ext lint --source-dir ./src/ diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js index 9c4205f..360662c 100644 --- a/src/assets/javascripts/services.js +++ b/src/assets/javascripts/services.js @@ -566,38 +566,58 @@ function unifyPreferences(url, tabId) { }) } -async function setRedirects(redirects) { - fetch("/config/config.json") - .then(response => response.text()) - .then(configData => { - //browser.storage.local.get(["options", "blacklists"], async r => { - //const options = r.options - const config = JSON.parse(configData) - let targets = {} - for (const service in config.services) { - if (config.services[service].targets == "datajson") { - targets[service] = redirects[service] - } - /* - for (const frontend in config.services[service].frontends) { - if (config.services[service].frontends[frontend].instanceList) { - for (const network in config.networks) { - options[frontend][network].enabled = redirects[frontend][network] - } - for (const blacklist in r.blacklists) { - for (const instance of blacklist) { - let i = options[frontend].clearnet.enabled.indexOf(instance) - if (i > -1) options[frontend].clearnet.enabled.splice(i, 1) +function setRedirects(passedRedirects) { + return new Promise(resolve => { + fetch("/config/config.json") + .then(response => response.text()) + .then(configData => { + browser.storage.local.get(/* [ */ "options" /* , "blacklists"] */, async r => { + let redirects = passedRedirects + let options = r.options + const config = JSON.parse(configData) + let targets = {} + for (const service in config.services) { + if (config.services[service].targets == "datajson") { + targets[service] = redirects[service] + delete redirects[service] + } + 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) + } } } } + /* + for (const frontend in config.services[service].frontends) { + if (config.services[service].frontends[frontend].instanceList) { + for (const network in config.networks) { + options[frontend][network].enabled = redirects[frontend][network] + } + for (const blacklist in r.blacklists) { + for (const instance of blacklist) { + let i = options[frontend].clearnet.enabled.indexOf(instance) + if (i > -1) options[frontend].clearnet.enabled.splice(i, 1) + } + } + } + } + */ + // The above will be implemented with https://github.com/libredirect/libredirect/issues/334 } - */ - // The above will be implemented with https://github.com/libredirect/libredirect/issues/334 - } - browser.storage.local.set({ redirects, targets /*, options*/ }) - //}) - }) + for (const frontend in redirects) { + let exists = false + for (const service in config.services) if (config.services[service].frontends[frontend]) exists = true + if (!exists) delete redirects[frontend] + else for (const network in redirects[frontend]) if (!config.networks[network]) delete redirects[frontend][network] + } + browser.storage.local.set({ redirects, targets, options }, () => resolve()) + }) + }) + }) } function initDefaults() { @@ -617,7 +637,10 @@ function initDefaults() { const latency = {} for (const service in config.services) { options[service] = {} - if (config.services[service].targets == "datajson") targets[service] = redirects[service] + if (config.services[service].targets == "datajson") { + targets[service] = redirects[service] + delete redirects[service] + } for (const defaultOption in config.services[service].options) options[service][defaultOption] = config.services[service].options[defaultOption] for (const frontend in config.services[service].frontends) { if (config.services[service].frontends[frontend].instanceList) { @@ -729,7 +752,10 @@ function processUpdate() { let config = JSON.parse(configData) for (const service in config.services) { if (!options[service]) options[service] = {} - if (config.services[service].targets == "datajson") targets[service] = redirects[service] + if (config.services[service].targets == "datajson") { + targets[service] = redirects[service] + delete redirects[service] + } for (const defaultOption in config.services[service].options) { if (options[service][defaultOption] === undefined) { options[service][defaultOption] = config.services[service].options[defaultOption] diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js index 9a2d490..b176967 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -47,7 +47,6 @@ function updateInstances() { const instances = JSON.parse(http.responseText) await servicesHelper.setRedirects(instances) - await servicesHelper.processEnabledInstanceList() console.info("Successfully updated Instances") resolve(true) diff --git a/src/config/config.json b/src/config/config.json index 7a8d2a7..0c32750 100644 --- a/src/config/config.json +++ b/src/config/config.json @@ -253,7 +253,7 @@ "instanceList": true } }, - "targets": ["^https?:\\/{2}(www\\.|old\\.|np\\.|new\\.|amp\\.|)reddit\\.com(?=\\/u(ser)?\\/|\\/r\\/|\\/?$)", "^https?:\\/{2}(i\\.|(external-)?preview\\.|)redd\\.it"], + "targets": ["^https?:\\/{2}(www\\.|old\\.|np\\.|new\\.|amp\\.|)reddit\\.com(?=\\/u(ser)?\\/|\\/r\\/|\\/?$)", "^https?:\\/{2}(i|(external-)?preview)\\.redd\\.it"], "name": "Reddit", "options": { "enabled": true,