Make config.json fetching work

This commit is contained in:
Hygna 2022-09-09 22:08:40 +01:00
parent 4cab752e05
commit c005983a0f
1 changed files with 24 additions and 22 deletions

View File

@ -2,23 +2,25 @@ window.browser = window.browser || window.chrome
import utils from "./utils.js" import utils from "./utils.js"
let config let config = {},
redirects = {},
options = {}
let disabled, curNetwork, networkFallback, redirectType
function getConfig() { async function getConfig() {
return new Promise(async resolve => { return new Promise(resolve => {
let data
fetch("/config/config.json") fetch("/config/config.json")
.then(response => response.text()) .then(response => response.text())
.then(data => { .then(data => {
data = JSON.parse(data) config = JSON.parse(data)
resolve()
}) })
config = data
resolve()
}) })
} }
let redirects = {} function camelCase(str) {
let disabled, curNetwork, networkFallback, redirectType return str.charAt(0).toUpperCase() + str.slice(1)
}
function init() { function init() {
return new Promise(async resolve => { return new Promise(async resolve => {
@ -27,16 +29,16 @@ function init() {
networkFallback = r.networkFallback networkFallback = r.networkFallback
}) })
//cur = current //cur = current
for (service in config.services) { for (const service in config.services) {
redirects = {} options[service] = {}
browser.storage.local.get([`disable${camelCase(service)}`, `${service}Redirects`, `${service}RedirectType,`, `${service}Frontend`], r => { browser.storage.local.get([`disable${camelCase(service)}`, `${service}Redirects`, `${service}RedirectType,`, `${service}Frontend`], r => {
disabled = r["disable" + camelCase(service)] options[service].disabled = r["disable" + camelCase(service)]
redirects = r[service + "Redirects"] options[service].redirects = r[service + "Redirects"]
frontend = r[service + "Frontend"] options[service].frontend = r[service + "Frontend"]
}) })
for (frontend in config[service].frontends) { for (const frontend in config.services[service].frontends) {
redirects[frontend] = {} redirects[frontend] = {}
for (network in config.networks) { for (const network in config.networks) {
browser.storage.local.get([`${frontend}${camelCase(network)}RedirectsChecks`, `${frontend}${camelCase(network)}CustomRedirects`], r => { browser.storage.local.get([`${frontend}${camelCase(network)}RedirectsChecks`, `${frontend}${camelCase(network)}CustomRedirects`], r => {
redirects[frontend][network] = [...r[frontend + camelCase(network) + "RedirectsChecks"], ...r[frontend + camelCase(network) + "CustomRedirects"]] redirects[frontend][network] = [...r[frontend + camelCase(network) + "RedirectsChecks"], ...r[frontend + camelCase(network) + "CustomRedirects"]]
}) })
@ -47,7 +49,7 @@ function init() {
}) })
} }
getConfig() await getConfig()
console.log(config) console.log(config)
init() init()
browser.storage.onChanged.addListener(init) browser.storage.onChanged.addListener(init)
@ -55,7 +57,7 @@ browser.storage.onChanged.addListener(init)
function redirect(url, type, initiator) { function redirect(url, type, initiator) {
let randomInstance, frontend let randomInstance, frontend
if (url.pathname == "/") return if (url.pathname == "/") return
for (service in config.services) { for (const service in config.services) {
if (disabled && !disableOverride) continue if (disabled && !disableOverride) continue
let targets = service.targets let targets = service.targets
if (targets == "datajson") { if (targets == "datajson") {
@ -368,18 +370,18 @@ function initDefaults() {
let dataJson = JSON.parse(data) let dataJson = JSON.parse(data)
redirects = dataJson redirects = dataJson
browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList", "offlineBlackList"], async r => { browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList", "offlineBlackList"], async r => {
for (service in config.services) { for (const service in config.services) {
for (defaultOption in service.defaults) { for (const defaultOption in service.defaults) {
browser.storage.local.set({ browser.storage.local.set({
[defaultOption]: service.defaults[defaultOption], [defaultOption]: service.defaults[defaultOption],
}) })
} }
for (frontend in service.frontends) { for (const frontend in service.frontends) {
for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList, ...r.offlineBlackList]) { for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList, ...r.offlineBlackList]) {
let i = redirects[frontend]["clearnet"].indexOf(instance) let i = redirects[frontend]["clearnet"].indexOf(instance)
if (i > -1) redirects[frontend]["clearnet"].splice(i, 1) if (i > -1) redirects[frontend]["clearnet"].splice(i, 1)
} }
for (network in config.networks) { for (const network in config.networks) {
browser.storage.local.set({ browser.storage.local.set({
[frontend + camelCase(network) + "RedirectsChecks"]: [...redirects[frontend][network]], [frontend + camelCase(network) + "RedirectsChecks"]: [...redirects[frontend][network]],
[frontend + camelCase(network) + "CustomRedirects"]: [], [frontend + camelCase(network) + "CustomRedirects"]: [],