about summary refs log tree commit diff stats
path: root/src/assets/javascripts/init.js
diff options
context:
space:
mode:
authorHygna <hygna@proton.me>2022-10-01 11:17:32 +0100
committerHygna <hygna@proton.me>2022-10-01 11:17:32 +0100
commite21ecb4e1d640add426865d5719ba8cd63eab977 (patch)
treed1e24c6b465dac81c50d10bba9bca755f8d3b095 /src/assets/javascripts/init.js
parentSquashed a few bugs (diff)
downloadlibredirect-e21ecb4e1d640add426865d5719ba8cd63eab977.zip
Unify Localstorage
Diffstat (limited to 'src/assets/javascripts/init.js')
-rw-r--r--src/assets/javascripts/init.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/assets/javascripts/init.js b/src/assets/javascripts/init.js
new file mode 100644
index 00000000..c6758530
--- /dev/null
+++ b/src/assets/javascripts/init.js
@@ -0,0 +1,60 @@
+async function getConfig() {
+	return new Promise(resolve => {
+		fetch("/config/config.json")
+			.then(response => response.text())
+			.then(data => {
+				config = JSON.parse(data)
+				resolve()
+			})
+	})
+}
+
+let config
+await getConfig()
+
+async function initDefaults() {
+	return new Promise(async resolve => {
+		fetch("/instances/data.json")
+			.then(response => response.text())
+			.then(async data => {
+				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()
+				})
+			})
+	})
+}
+
+export default {
+	initDefaults,
+}