about summary refs log tree commit diff stats
path: root/src/assets/javascripts/init.js
blob: 568d9cdcbc3654b3c392d7adb46e872b53ab3a0b (plain) (blame)
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,
}