about summary refs log tree commit diff stats
path: root/src/assets/javascripts/utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets/javascripts/utils.js')
-rw-r--r--src/assets/javascripts/utils.js86
1 files changed, 60 insertions, 26 deletions
diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js
index 50ada765..5ca5c30b 100644
--- a/src/assets/javascripts/utils.js
+++ b/src/assets/javascripts/utils.js
@@ -28,14 +28,48 @@ let authenticateBlackList = []
 let offlineBlackList = []
 async function initBlackList() {
 	return new Promise(resolve => {
-		fetch("/instances/blacklist.json")
-			.then(response => response.text())
-			.then(data => {
-				cloudflareBlackList = JSON.parse(data).cloudflare
-				authenticateBlackList = JSON.parse(data).authenticate
-				offlineBlackList = JSON.parse(data).offline
+		browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList", "offlineBlackList"], r => {
+			cloudflareBlackList = r.cloudflareBlackList
+			authenticateBlackList = r.authenticateBlackList
+			offlineBlackList = r.offlineBlackList
+		})
+		if (cloudflareBlackList.length == 0) {
+			fetch("/instances/blacklist.json")
+				.then(response => response.text())
+				.then(data => {
+					cloudflareBlackList = JSON.parse(data).cloudflare
+					authenticateBlackList = JSON.parse(data).authenticate
+					offlineBlackList = JSON.parse(data).offline
+				})
+		}
+		resolve()
+	})
+}
+
+function updateBlackList() {
+	return new Promise(async resolve => {
+		let http = new XMLHttpRequest()
+		let fallback = new XMLHttpRequest()
+		http.open("GET", "https://codeberg.org/LibRedirect/libredirect/raw/branch/master/src/instances/blacklist.json", false)
+		http.send(null)
+		if (http.status != 200) {
+			fallback.open("GET", "https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/blacklist.json", false)
+			fallback.send(null)
+			if (fallback.status === 200) {
+				http = fallback
+			} else {
 				resolve()
-			})
+				return
+			}
+		}
+		const blackList = JSON.parse(http.responseText)
+		browser.storage.local.set({
+			cloudflareBlackList: blackList.cloudflare,
+			authenticateBlackList: blackList.authenticate,
+			offlineBlackList: blackList.offline,
+		})
+		;(cloudflareBlackList = blackList.cloudflare), (authenticateBlackList = blackList.authenticate), (offlineBlackList = blackList.offline)
+		resolve()
 	})
 }
 
@@ -55,45 +89,45 @@ function updateInstances() {
 				return
 			}
 		}
-		await initBlackList()
+		await updateBlackList()
 		const instances = JSON.parse(http.responseText)
 
-		youtubeHelper.setRedirects({
+		await youtubeHelper.setRedirects({
 			invidious: instances.invidious,
 			piped: instances.piped,
 			pipedMaterial: instances.pipedMaterial,
 			cloudtube: instances.cloudtube,
 		})
-		twitterHelper.setRedirects(instances.nitter)
-		instagramHelper.setRedirects(instances.bibliogram)
-		redditHelper.setRedirects({
+		await twitterHelper.setRedirects(instances.nitter)
+		await instagramHelper.setRedirects(instances.bibliogram)
+		await redditHelper.setRedirects({
 			libreddit: instances.libreddit,
 			teddit: instances.teddit,
 		})
-		translateHelper.setRedirects({
+		await translateHelper.setRedirects({
 			simplyTranslate: instances.simplyTranslate,
 			lingva: instances.lingva,
 		})
-		searchHelper.setRedirects({
+		await searchHelper.setRedirects({
 			searx: instances.searx,
 			searxng: instances.searxng,
 			whoogle: instances.whoogle,
 			librex: instances.librex,
 		})
-		wikipediaHelper.setRedirects(instances.wikiless)
-		mediumHelper.setRedirects(instances.scribe)
-		quoraHelper.setRedirects(instances.quetre)
-		libremdbHelper.setRedirects(instances.libremdb)
-		sendTargetsHelper.setRedirects(instances.send)
-		tiktokHelper.setRedirects(instances.proxiTok)
-		lbryHelper.setRedirects(instances.librarian)
-		reutersHelper.setRedirects(instances.neuters)
-		youtubeMusicHelper.setRedirects({
+		await wikipediaHelper.setRedirects(instances.wikiless)
+		await mediumHelper.setRedirects(instances.scribe)
+		await quoraHelper.setRedirects(instances.quetre)
+		await libremdbHelper.setRedirects(instances.libremdb)
+		await sendTargetsHelper.setRedirects(instances.send)
+		await tiktokHelper.setRedirects(instances.proxiTok)
+		await lbryHelper.setRedirects(instances.librarian)
+		await reutersHelper.setRedirects(instances.neuters)
+		await youtubeMusicHelper.setRedirects({
 			beatbump: instances.beatbump,
 			hyperpipe: instances.hyperpipe,
 		})
-		mapsHelper.setRedirects(instances.facil)
-		peertubeHelper.setRedirects(instances.simpleertube)
+		await mapsHelper.setRedirects(instances.facil)
+		await peertubeHelper.setRedirects(instances.simpleertube)
 
 		console.info("Successfully updated Instances")
 		resolve(true)
@@ -511,7 +545,7 @@ function latency(name, frontend, document, location) {
 	latencyElement.addEventListener("click", async () => {
 		let reloadWindow = () => location.reload()
 		latencyElement.addEventListener("click", reloadWindow)
-		let key = `${name} Redirects`
+		let key = `${name}Redirects`
 		browser.storage.local.get(key, r => {
 			let redirects = r[key]
 			const oldHtml = latencyLabel.innerHTML