1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
async function initDefaults() {
return new Promise(async resolve => {
fetch("/instances/data.json")
.then(response => response.text())
.then(async data => {
fetch("/config/config.json")
.then(response => response.text())
.then(async config => {
browser.storage.local.get(["options", "blacklists"], async r => {
let redirects = JSON.parse(data)
let options = r.options
let targets = {}
const localstorage = {}
const latency = {}
for (const service in config.services) {
options[service] = {}
if (config.services[service].targets == "datajson") {
targets[service] = 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) {
options[frontend] = {}
for (const network in config.networks) {
options[frontend][network] = {}
options[frontend][network].enabled = JSON.parse(data)[frontend][network]
options[frontend][network].custom = []
}
for (const blacklist in r.blacklists) {
for (const instance of r.blacklists[blacklist]) {
let i = options[frontend].clearnet.enabled.indexOf(instance)
if (i > -1) options[frontend].clearnet.enabled.splice(i, 1)
}
}
}
}
}
browser.storage.local.set({ redirects, options, targets, latency, localstorage })
resolve()
})
})
})
})
}
async function upgradeOptions() {
return new Promise(async resolve => {
fetch("/config/config.json")
.then(response => response.text())
.then(async config => {
initDefaults().then(
browser.storage.local.get(["options", "exceptions", "theme", "popupFrontends"], r => {
let options = r.options
let latency = {}
options.exceptions = r.exceptions
if (r.theme != "DEFAULT") options.theme = r.theme
for (const service in config.services) {
browser.storage.local.get([`disable${utils.camelCase(service)}`, `${service}RedirectType`, `${service}Frontend`, `${service}Latency`, `${service}EmbedFrontend`], r => {
if (r) {
options[service].enabled = r["disable" + utils.camelCase(service)]
if (r[service + "Frontend"]) options[service].frontend = r[service + "Frontend"]
if (r[service + "RedirectType"]) options[service].redirectType = r[service + "RedirectType"]
if (r[service + "EmbedFrontend"] && (service != "youtube" || r[service + "EmbedFrontend"] == ("invidious" || "piped"))) options[service].EmbedFrontend = r[service + "EmbedFrontend"]
if (r[service + "Latency"]) latency[frontend] = r[service + "Latency"]
}
})
for (const frontend in config.services[service].frontends) {
for (const network in config.networks) {
let protocol
if (network == "clearnet") protocol == "normal"
else protocol == network
browser.storage.local.get([`${frontend}${utils.camelCase(network)}RedirectsChecks`, `${frontend}${utils.camelCase(protocol)}CustomRedirects`], r => {
if (r) {
options[frontend][network].checks = r[frontend + utils.camelCase(protocol) + "RedirectsChecks"]
options[frontend][network].custom = r[frontend + utils.camelCase(protocol) + "CustomRedirects"]
}
})
}
}
}
browser.storage.local.set({ options, latency })
resolve()
})
)
})
})
}
export default {
initDefaults,
upgradeOptions,
}
|