about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/services.js4
-rw-r--r--src/assets/javascripts/utils.js31
-rw-r--r--src/pages/options/index.js86
3 files changed, 72 insertions, 49 deletions
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index 988f6348..0b4e495a 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -624,7 +624,7 @@ function processUpdate() {
 				fetch("/config.json")
 					.then(response => response.text())
 					.then(configData => {
-						browser.storage.local.get(["options", "targets"], r => {
+						browser.storage.local.get(["options", "targets"], async r => {
 							let redirects = JSON.parse(data)
 							let options = r.options
 							let targets = r.targets
@@ -647,7 +647,7 @@ function processUpdate() {
 											if (!options[frontend]) {
 												options[frontend] = []
 												if (network == "clearnet") {
-													for (const blacklist of getBlacklist()) {
+													for (const blacklist of await utils.getBlacklist()) {
 														for (const instance of blacklist) {
 															let i = options[frontend].clearnet.enabled.indexOf(instance)
 															if (i > -1) options[frontend].clearnet.enabled.splice(i, 1)
diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js
index 6e6b6707..86b9b402 100644
--- a/src/assets/javascripts/utils.js
+++ b/src/assets/javascripts/utils.js
@@ -71,17 +71,32 @@ function switchInstance(test) {
 }
 
 function getBlacklist() {
-	let http = new XMLHttpRequest()
-	http.open("GET", "https://codeberg.org/LibRedirect/libredirect/raw/branch/master/src/instances/blacklist.json", false)
-	http.send(null)
-	return JSON.parse(http.responseText)
+	return new Promise(resolve => {
+		const http = new XMLHttpRequest()
+		http.open("GET", "https://codeberg.org/LibRedirect/libredirect/raw/branch/master/src/instances/blacklist.json", true)
+		http.onreadystatechange = () => {
+			if (http.status === 200 && http.readyState == XMLHttpRequest.DONE) {
+				resolve(JSON.parse(http.responseText))
+				return
+			}
+		}
+		http.send(null)
+	})
 }
 
 function getList() {
-	let http = new XMLHttpRequest()
-	http.open("GET", "https://codeberg.org/LibRedirect/libredirect/raw/branch/master/src/instances/data.json", false)
-	http.send(null)
-	return JSON.parse(http.responseText)
+	return new Promise(resolve => {
+		const http = new XMLHttpRequest()
+		http.open("GET", "https://codeberg.org/LibRedirect/libredirect/raw/branch/master/src/instances/data.json", true)
+		http.onreadystatechange = () => {
+			if (http.status === 200 && http.readyState == XMLHttpRequest.DONE) {
+				resolve(JSON.parse(http.responseText))
+				return
+			}
+		}
+		http.send(null)
+	})
+
 }
 
 export default {
diff --git a/src/pages/options/index.js b/src/pages/options/index.js
index 006b5248..68f45d6a 100644
--- a/src/pages/options/index.js
+++ b/src/pages/options/index.js
@@ -86,13 +86,23 @@ function loadPage(path) {
 
 		for (const frontend in config.services[service].frontends) {
 			if (config.services[service].frontends[frontend].instanceList) {
-				processDefaultCustomInstances(frontend, config.networks, document)
+				processDefaultCustomInstances(frontend, document)
 			}
 		}
+
+		!async function () {
+			const blacklist = await utils.getBlacklist()
+			const redirects = await utils.getList()
+			for (const frontend in config.services[service].frontends) {
+				if (config.services[service].frontends[frontend].instanceList) {
+					createList(frontend, config.networks, document, redirects, blacklist)
+				}
+			}
+		}()
 	}
 }
 
-async function processDefaultCustomInstances(frontend, networks, document) {
+async function processDefaultCustomInstances(frontend, document) {
 	let customInstances = []
 	let options
 	await new Promise(async resolve =>
@@ -103,42 +113,6 @@ async function processDefaultCustomInstances(frontend, networks, document) {
 		})
 	)
 
-	!async function () {
-		const blacklist = utils.getBlacklist()
-		const redirects = utils.getList()
-
-		for (const network in networks) {
-			if (redirects[frontend][network].length > 0) {
-				document.getElementById(frontend).getElementsByClassName(network)[0].getElementsByClassName("checklist")[0].innerHTML = [
-					`
-				<div class="some-block option-block">
-					<h4>${utils.camelCase(network)}</h4>
-				</div>
-				`,
-					...redirects[frontend][network]
-						.sort((a, b) =>
-							(blacklist.cloudflare.includes(a) && !blacklist.cloudflare.includes(b))
-							||
-							(blacklist.authenticate.includes(a) && !blacklist.authenticate.includes(b))
-						)
-						.map(x => {
-							const cloudflare = blacklist.cloudflare.includes(x) ? ' <span style="color:red;">cloudflare</span>' : ""
-							const authenticate = blacklist.authenticate.includes(x) ? ' <span style="color:orange;">authenticate</span>' : ""
-
-							let warnings = [cloudflare, authenticate].join(" ")
-							return `
-						<div>
-							<x>
-								<a href="${x}" target="_blank">${x}</a>${warnings}
-							</x>
-						  </div>`
-						}),
-					'<br>'
-				].join("\n<hr>\n")
-			}
-		}
-	}()
-
 	localise.localisePage()
 
 	function calcCustomInstances() {
@@ -191,6 +165,40 @@ async function processDefaultCustomInstances(frontend, networks, document) {
 	})
 }
 
+function createList(frontend, networks, document, redirects, blacklist) {
+	for (const network in networks) {
+		if (redirects[frontend][network].length > 0) {
+			document.getElementById(frontend).getElementsByClassName(network)[0].getElementsByClassName("checklist")[0].innerHTML = [
+				`
+			<div class="some-block option-block">
+				<h4>${utils.camelCase(network)}</h4>
+			</div>
+			`,
+				...redirects[frontend][network]
+					.sort((a, b) =>
+						(blacklist.cloudflare.includes(a) && !blacklist.cloudflare.includes(b))
+						||
+						(blacklist.authenticate.includes(a) && !blacklist.authenticate.includes(b))
+					)
+					.map(x => {
+						const cloudflare = blacklist.cloudflare.includes(x) ? ' <span style="color:red;">cloudflare</span>' : ""
+						const authenticate = blacklist.authenticate.includes(x) ? ' <span style="color:orange;">authenticate</span>' : ""
+
+						let warnings = [cloudflare, authenticate].join(" ")
+						return `
+					<div>
+						<x>
+							<a href="${x}" target="_blank">${x}</a>${warnings}
+						</x>
+					  </div>`
+					}),
+				'<br>'
+			].join("\n<hr>\n")
+		}
+	}
+}
+
+
 const r = window.location.href.match(/#(.*)/)
 if (r) loadPage(r[1])
-else loadPage("general")
+else loadPage("general")
\ No newline at end of file