about summary refs log tree commit diff stats
path: root/src/assets
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets')
-rw-r--r--src/assets/javascripts/imdb.js13
-rw-r--r--src/assets/javascripts/imgur.js57
-rw-r--r--src/assets/javascripts/instagram.js18
-rw-r--r--src/assets/javascripts/lbry.js13
-rw-r--r--src/assets/javascripts/maps.js13
-rw-r--r--src/assets/javascripts/medium.js18
-rw-r--r--src/assets/javascripts/peertube.js18
-rw-r--r--src/assets/javascripts/quora.js13
-rw-r--r--src/assets/javascripts/reddit.js30
-rw-r--r--src/assets/javascripts/reuters.js13
-rw-r--r--src/assets/javascripts/search.js79
-rw-r--r--src/assets/javascripts/sendTargets.js18
-rw-r--r--src/assets/javascripts/tiktok.js14
-rw-r--r--src/assets/javascripts/translate/translate.js35
-rw-r--r--src/assets/javascripts/twitter.js21
-rw-r--r--src/assets/javascripts/utils.js23
-rw-r--r--src/assets/javascripts/wikipedia.js18
-rw-r--r--src/assets/javascripts/youtube/youtube.js21
-rw-r--r--src/assets/javascripts/youtubeMusic.js30
19 files changed, 220 insertions, 245 deletions
diff --git a/src/assets/javascripts/imdb.js b/src/assets/javascripts/imdb.js
index 9981f1b9..1f6c7a5f 100644
--- a/src/assets/javascripts/imdb.js
+++ b/src/assets/javascripts/imdb.js
@@ -17,10 +17,10 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects.libremdb = val
 		libremdbNormalRedirectsChecks = [...redirects.libremdb.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = libremdbNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) libremdbNormalRedirectsChecks.splice(a, 1)
 		}
@@ -172,12 +172,18 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		libremdbNormalRedirectsChecks = [...redirects.libremdb.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = libremdbNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) libremdbNormalRedirectsChecks.splice(a, 1)
+		}
 				browser.storage.local.set(
 					{
 						disableImdb: true,
 						imdbRedirects: redirects,
 
-						libremdbNormalRedirectsChecks: [...redirects.libremdb.normal],
+						libremdbNormalRedirectsChecks,
 						libremdbNormalCustomRedirects: [],
 
 						libremdbTorRedirectsChecks: [...redirects.libremdb.tor],
@@ -192,6 +198,7 @@ function initDefaults() {
 					() => resolve()
 				)
 			})
+			})
 	})
 }
 
diff --git a/src/assets/javascripts/imgur.js b/src/assets/javascripts/imgur.js
index 9ccd24af..25f61f06 100644
--- a/src/assets/javascripts/imgur.js
+++ b/src/assets/javascripts/imgur.js
@@ -16,39 +16,18 @@ for (let i = 0; i < frontends.length; i++) {
 	}
 }
 
-function setRedirects() {
-	return new Promise(resolve => {
-		fetch("/instances/data.json")
-			.then(response => response.text())
-			.then(async data => {
-				let dataJson = JSON.parse(data)
-				redirects.rimgo = dataJson.rimgo
-
-				rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]
-				rimgoTorRedirectsChecks = [...redirects.rimgo.tor]
-				rimgoI2pRedirectsChecks = [...redirects.rimgo.i2p]
-
-				for (const instance of r.cloudflareBlackList) {
-					const a = rimgoNormalRedirectsChecks.indexOf(instance)
-					if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1)
-
-					const b = rimgoTorRedirectsChecks.indexOf(instance)
-					if (b > -1) rimgoTorRedirectsChecks.splice(b, 1)
-
-					const c = rimgoI2pRedirectsChecks.indexOf(instance)
-					if (c > -1) rimgoI2pRedirectsChecks.splice(c, 1)
-				}
-
-				browser.storage.local.set(
-					{
-						imgurRedirects: redirects,
-						rimgoNormalRedirectsChecks,
-						rimgoTorRedirectsChecks,
-						rimgoI2pRedirectsChecks,
-					},
-					() => resolve()
-				)
-			})
+function setRedirects(val) {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
+		redirects.rimgo = val
+		rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = rimgoNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1)
+		}
+		browser.storage.local.set({
+			imgurRedirects: redirects,
+			rimgoNormalRedirectsChecks,
+		})
 	})
 }
 
@@ -195,12 +174,12 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
-				browser.storage.local.get("cloudflareBlackList", async r => {
-					rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]
-					for (const instance of r.cloudflareBlackList) {
-						const i = rimgoNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1)
-					}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = rimgoNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1)
+		}
 					browser.storage.local.set(
 						{
 							disableImgur: false,
diff --git a/src/assets/javascripts/instagram.js b/src/assets/javascripts/instagram.js
index 00042074..a65dac80 100644
--- a/src/assets/javascripts/instagram.js
+++ b/src/assets/javascripts/instagram.js
@@ -16,10 +16,10 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", async r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
 		redirects.bibliogram = val
 		bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = bibliogramNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1)
 		}
@@ -203,17 +203,17 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
-				browser.storage.local.get("cloudflareBlackList", r => {
-					bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]
-					for (const instance of r.cloudflareBlackList) {
-						const i = bibliogramNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) bibliogramNormalRedirectsChecks.splice(i, 1)
-					}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = bibliogramNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1)
+		}
 					browser.storage.local.set({
 						disableInstagram: false,
 						instagramRedirects: redirects,
 
-						bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks,
+						bibliogramNormalRedirectsChecks,
 						bibliogramNormalCustomRedirects: [],
 
 						bibliogramTorRedirectsChecks: [...redirects.bibliogram.tor],
diff --git a/src/assets/javascripts/lbry.js b/src/assets/javascripts/lbry.js
index 0c4d34cc..b1e6f477 100644
--- a/src/assets/javascripts/lbry.js
+++ b/src/assets/javascripts/lbry.js
@@ -17,10 +17,10 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects.librarian = val
 		librarianNormalRedirectsChecks = [...redirects.librarian.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = librarianNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) librarianNormalRedirectsChecks.splice(a, 1)
 		}
@@ -175,6 +175,12 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		librarianNormalRedirectsChecks = [...redirects.librarian.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = librarianNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) librarianNormalRedirectsChecks.splice(a, 1)
+		}
 				browser.storage.local.set(
 					{
 						disableLbryTargets: true,
@@ -182,7 +188,7 @@ function initDefaults() {
 						lbryTargetsRedirects: redirects,
 						lbryRedirectType: "both",
 
-						librarianNormalRedirectsChecks: [...redirects.librarian.normal],
+						librarianNormalRedirectsChecks,
 						librarianNormalCustomRedirects: [],
 
 						librarianTorRedirectsChecks: [...redirects.librarian.tor],
@@ -197,6 +203,7 @@ function initDefaults() {
 					() => resolve()
 				)
 			})
+			})
 	})
 }
 
diff --git a/src/assets/javascripts/maps.js b/src/assets/javascripts/maps.js
index 9fb10b9d..6627faff 100644
--- a/src/assets/javascripts/maps.js
+++ b/src/assets/javascripts/maps.js
@@ -21,10 +21,10 @@ redirects.osm = {}
 redirects.osm.normal = ["https://www.openstreetmap.org"]
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects.facil = val
 		facilNormalRedirectsChecks = [...redirects.facil.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = facilNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) facilNormalRedirectsChecks.splice(a, 1)
 		}
@@ -264,12 +264,18 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		facilNormalRedirectsChecks = [...redirects.facil.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = facilNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) facilNormalRedirectsChecks.splice(a, 1)
+		}
 				browser.storage.local.set(
 					{
 						disableMaps: false,
 						mapsFrontend: "osm",
 						mapsRedirects: redirects,
-						facilNormalRedirectsChecks: [...redirects.facil.normal],
+						facilNormalRedirectsChecks,
 						facilNormalCustomRedirects: [],
 
 						facilTorRedirectsChecks: [...redirects.facil.tor],
@@ -284,6 +290,7 @@ function initDefaults() {
 					() => resolve()
 				)
 			})
+			})
 	})
 }
 
diff --git a/src/assets/javascripts/medium.js b/src/assets/javascripts/medium.js
index 4c03471c..f1dcf2e2 100644
--- a/src/assets/javascripts/medium.js
+++ b/src/assets/javascripts/medium.js
@@ -40,10 +40,10 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects.scribe = val
 		scribeNormalRedirectsChecks = [...redirects.scribe.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = scribeNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) scribeNormalRedirectsChecks.splice(a, 1)
 		}
@@ -181,18 +181,18 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
-				browser.storage.local.get("cloudflareBlackList", async r => {
-					scribeNormalRedirectsChecks = [...redirects.scribe.normal]
-					for (const instance of r.cloudflareBlackList) {
-						let i = scribeNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) scribeNormalRedirectsChecks.splice(i, 1)
-					}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		scribeNormalRedirectsChecks = [...redirects.scribe.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = scribeNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) scribeNormalRedirectsChecks.splice(a, 1)
+		}
 					browser.storage.local.set(
 						{
 							disableMedium: false,
 							mediumRedirects: redirects,
 
-							scribeNormalRedirectsChecks: scribeNormalRedirectsChecks,
+							scribeNormalRedirectsChecks,
 							scribeNormalCustomRedirects: [],
 
 							scribeTorRedirectsChecks: [...redirects.scribe.tor],
diff --git a/src/assets/javascripts/peertube.js b/src/assets/javascripts/peertube.js
index de25cfaa..df95611c 100644
--- a/src/assets/javascripts/peertube.js
+++ b/src/assets/javascripts/peertube.js
@@ -15,10 +15,10 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects.simpleertube = val
 		simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = simpleertubeNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) simpleertubeNormalRedirectsChecks.splice(a, 1)
 		}
@@ -162,19 +162,19 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
-				browser.storage.local.get("cloudflareBlackList", async r => {
-					simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal]
-					for (const instance of r.cloudflareBlackList) {
-						let i = simpleertubeNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1)
-					}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = simpleertubeNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) simpleertubeNormalRedirectsChecks.splice(a, 1)
+		}
 					browser.storage.local.set(
 						{
 							peerTubeTargets: ["https://search.joinpeertube.org", ...dataJson.peertube],
 							disablePeertubeTargets: true,
 							peertubeRedirects: redirects,
 
-							simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks,
+							simpleertubeNormalRedirectsChecks,
 							simpleertubeNormalCustomRedirects: [],
 
 							simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor],
diff --git a/src/assets/javascripts/quora.js b/src/assets/javascripts/quora.js
index 3f9e4189..4d8249f8 100644
--- a/src/assets/javascripts/quora.js
+++ b/src/assets/javascripts/quora.js
@@ -17,10 +17,10 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects.quetre = val
 		quetreNormalRedirectsChecks = [...redirects.quetre.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = quetreNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) quetreNormalRedirectsChecks.splice(a, 1)
 		}
@@ -157,13 +157,19 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		quetreNormalRedirectsChecks = [...redirects.quetre.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = quetreNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) quetreNormalRedirectsChecks.splice(a, 1)
+		}
 				browser.storage.local.set(
 					{
 						disableQuora: false,
 
 						quoraRedirects: redirects,
 
-						quetreNormalRedirectsChecks: [...redirects.quetre.normal],
+						quetreNormalRedirectsChecks,
 						quetreNormalCustomRedirects: [],
 
 						quetreTorRedirectsChecks: [...redirects.quetre.tor],
@@ -178,6 +184,7 @@ function initDefaults() {
 					() => resolve()
 				)
 			})
+			})
 	})
 }
 
diff --git a/src/assets/javascripts/reddit.js b/src/assets/javascripts/reddit.js
index d1bf7b99..2a07dffb 100644
--- a/src/assets/javascripts/reddit.js
+++ b/src/assets/javascripts/reddit.js
@@ -16,11 +16,11 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects = val
 		libredditNormalRedirectsChecks = [...redirects.libreddit.normal]
 		tedditNormalRedirectsChecks = [...redirects.teddit.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = libredditNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) libredditNormalRedirectsChecks.splice(a, 1)
 
@@ -330,25 +330,23 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
-				browser.storage.local.get("cloudflareBlackList", async r => {
-					libredditNormalRedirectsChecks = [...redirects.libreddit.normal]
-					tedditNormalRedirectsChecks = [...redirects.teddit.normal]
-					for (const instance of r.cloudflareBlackList) {
-						let i
-
-						i = libredditNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) libredditNormalRedirectsChecks.splice(i, 1)
-
-						i = tedditNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) tedditNormalRedirectsChecks.splice(i, 1)
-					}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		libredditNormalRedirectsChecks = [...redirects.libreddit.normal]
+		tedditNormalRedirectsChecks = [...redirects.teddit.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = libredditNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) libredditNormalRedirectsChecks.splice(a, 1)
+
+			const b = tedditNormalRedirectsChecks.indexOf(instance)
+			if (b > -1) tedditNormalRedirectsChecks.splice(b, 1)
+		}
 					browser.storage.local.set(
 						{
 							disableReddit: false,
 							redditFrontend: "libreddit",
 							redditRedirects: redirects,
 
-							libredditNormalRedirectsChecks: libredditNormalRedirectsChecks,
+							libredditNormalRedirectsChecks,
 							libredditNormalCustomRedirects: [],
 
 							libredditTorRedirectsChecks: [...redirects.libreddit.tor],
@@ -360,7 +358,7 @@ function initDefaults() {
 							libredditLokiRedirectsChecks: [...redirects.libreddit.loki],
 							libredditLokiCustomRedirects: [],
 
-							tedditNormalRedirectsChecks: tedditNormalRedirectsChecks,
+							tedditNormalRedirectsChecks,
 							tedditNormalCustomRedirects: [],
 
 							tedditTorRedirectsChecks: [...redirects.teddit.tor],
diff --git a/src/assets/javascripts/reuters.js b/src/assets/javascripts/reuters.js
index e4afa19c..78f5077b 100644
--- a/src/assets/javascripts/reuters.js
+++ b/src/assets/javascripts/reuters.js
@@ -17,10 +17,10 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects.neuters = val
 		neutersNormalRedirectsChecks = [...redirects.neuters.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = neutersNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) neutersNormalRedirectsChecks.splice(a, 1)
 		}
@@ -109,13 +109,19 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		neutersNormalRedirectsChecks = [...redirects.neuters.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = neutersNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) neutersNormalRedirectsChecks.splice(a, 1)
+		}
 				browser.storage.local.set(
 					{
 						disableReuters: true,
 
 						reutersRedirects: redirects,
 
-						neutersNormalRedirectsChecks: [...redirects.neuters.normal],
+						neutersNormalRedirectsChecks,
 						neutersNormalCustomRedirects: [],
 
 						neutersTorRedirectsChecks: [...redirects.neuters.tor],
@@ -130,6 +136,7 @@ function initDefaults() {
 					() => resolve()
 				)
 			})
+			})
 	})
 }
 
diff --git a/src/assets/javascripts/search.js b/src/assets/javascripts/search.js
index 2a5f4867..04b5b8d4 100644
--- a/src/assets/javascripts/search.js
+++ b/src/assets/javascripts/search.js
@@ -8,52 +8,22 @@ const frontends = new Array("searx", "searxng", "whoogle", "librex")
 const protocols = new Array("normal", "tor", "i2p", "loki")
 
 const redirects = {}
-/*
-  "searx": {
-    "normal": [],
-    "tor": [],
-    "i2p": []
-  },
-  "searxng": {
-    "normal": [],
-    "tor": [],
-    "i2p": []
-  },
-  "whoogle": {
-    "normal": [],
-    "tor": [],
-    "i2p": []
-  }
-  */
-//};
-
-//let tmp = "{"
 
 for (let i = 0; i < frontends.length; i++) {
-	//redirects.frontends[i] = {}
-	//redirects.push(frontends[i])
-	//tmp = frontends[i]
-	//tmp = tmp + '\n"' + frontends[i] + '": {'
 	redirects[frontends[i]] = {}
 	for (let x = 0; x < protocols.length; x++) {
-		//redirects.frontends[i].protocols = []
-		//tmp = tmp + '\n"' + protocols[x] + '": [],'
 		redirects[frontends[i]][protocols[x]] = []
 	}
-	//tmp = tmp + "\n},"
 }
-//tmp = tmp + "\n}"
-
-//const redirects = JSON.parse(tmp)
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects = val
 		searxNormalRedirectsChecks = [...redirects.searx.normal]
 		searxngNormalRedirectsChecks = [...redirects.searxng.normal]
 		whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]
 		librexNormalRedirectsChecks = [...redirects.librex.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = searxNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) searxNormalRedirectsChecks.splice(a, 1)
 
@@ -499,35 +469,28 @@ function initDefaults() {
 			.then(response => response.text())
 			.then(async data => {
 				let dataJson = JSON.parse(data)
-				/*
-      redirects.searx = dataJson.searx;
-      redirects.searxng = dataJson.searxng;
-      redirects.whoogle = dataJson.whoogle;
-      */
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
 
-				browser.storage.local.get("cloudflareBlackList", async r => {
-					whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]
-					searxNormalRedirectsChecks = [...redirects.searx.normal]
-					searxngNormalRedirectsChecks = [...redirects.searxng.normal]
-					librexNormalRedirectsChecks = [...redirects.librex.normal]
-					for (const instance of r.cloudflareBlackList) {
-						let i
-
-						i = whoogleNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1)
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		searxNormalRedirectsChecks = [...redirects.searx.normal]
+		searxngNormalRedirectsChecks = [...redirects.searxng.normal]
+		whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]
+		librexNormalRedirectsChecks = [...redirects.librex.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = searxNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) searxNormalRedirectsChecks.splice(a, 1)
 
-						i = searxNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) searxNormalRedirectsChecks.splice(i, 1)
+			const b = searxngNormalRedirectsChecks.indexOf(instance)
+			if (b > -1) searxngNormalRedirectsChecks.splice(b, 1)
 
-						i = searxngNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) searxngNormalRedirectsChecks.splice(i, 1)
+			const c = whoogleNormalRedirectsChecks.indexOf(instance)
+			if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1)
 
-						i = librexNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) librexNormalRedirectsChecks.splice(i, 1)
-					}
+			const d = librexNormalRedirectsChecks.indexOf(instance)
+			if (d > -1) librexNormalRedirectsChecks.splice(d, 1)
+		}
 					browser.storage.local.set(
 						{
 							disableSearch: false,
@@ -535,7 +498,7 @@ function initDefaults() {
 							searchRedirects: redirects,
 							searxngCustomSettings: false,
 
-							whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks,
+							whoogleNormalRedirectsChecks,
 							whoogleNormalCustomRedirects: [],
 
 							whoogleTorRedirectsChecks: [...redirects.whoogle.tor],
@@ -547,7 +510,7 @@ function initDefaults() {
 							whoogleLokiRedirectsChecks: [...redirects.whoogle.loki],
 							whoogleLokiCustomRedirects: [],
 
-							searxNormalRedirectsChecks: searxNormalRedirectsChecks,
+							searxNormalRedirectsChecks,
 							searxNormalCustomRedirects: [],
 
 							searxTorRedirectsChecks: [...redirects.searx.tor],
@@ -559,7 +522,7 @@ function initDefaults() {
 							searxLokiRedirectsChecks: [...redirects.searx.loki],
 							searxLokiCustomRedirects: [],
 
-							searxngNormalRedirectsChecks: searxngNormalRedirectsChecks,
+							searxngNormalRedirectsChecks,
 							searxngNormalCustomRedirects: [],
 
 							searxngTorRedirectsChecks: [...redirects.searxng.tor],
@@ -571,7 +534,7 @@ function initDefaults() {
 							searxngLokiRedirectsChecks: [...redirects.searxng.loki],
 							searxngLokiCustomRedirects: [],
 
-							librexNormalRedirectsChecks: librexNormalRedirectsChecks,
+							librexNormalRedirectsChecks,
 							librexNormalCustomRedirects: [],
 
 							librexTorRedirectsChecks: [...redirects.librex.tor],
diff --git a/src/assets/javascripts/sendTargets.js b/src/assets/javascripts/sendTargets.js
index ba892fe3..c9ddfe2d 100644
--- a/src/assets/javascripts/sendTargets.js
+++ b/src/assets/javascripts/sendTargets.js
@@ -17,10 +17,10 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects.send = val
 		sendNormalRedirectsChecks = [...redirects.send.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = sendNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) sendNormalRedirectsChecks.splice(a, 1)
 		}
@@ -154,18 +154,18 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
-				browser.storage.local.get("cloudflareBlackList", async r => {
-					sendNormalRedirectsChecks = [...redirects.send.normal]
-					for (const instance of r.cloudflareBlackList) {
-						let i = sendNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) sendNormalRedirectsChecks.splice(i, 1)
-					}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		sendNormalRedirectsChecks = [...redirects.send.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = sendNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) sendNormalRedirectsChecks.splice(a, 1)
+		}
 					browser.storage.local.set(
 						{
 							disableSendTarget: false,
 							sendTargetsRedirects: redirects,
 
-							sendNormalRedirectsChecks: sendNormalRedirectsChecks,
+							sendNormalRedirectsChecks,
 							sendNormalCustomRedirects: [],
 
 							sendTorRedirectsChecks: [...redirects.send.tor],
diff --git a/src/assets/javascripts/tiktok.js b/src/assets/javascripts/tiktok.js
index 9d2660d4..b7987422 100644
--- a/src/assets/javascripts/tiktok.js
+++ b/src/assets/javascripts/tiktok.js
@@ -17,10 +17,10 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects.proxiTok = val
 		proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = proxiTokNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1)
 		}
@@ -202,13 +202,20 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal]
+		console.log(r)
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = proxiTokNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1)
+		}
 				browser.storage.local.set(
 					{
 						disableTiktok: false,
 
 						tiktokRedirects: redirects,
 
-						proxiTokNormalRedirectsChecks: [...redirects.proxiTok.normal],
+						proxiTokNormalRedirectsChecks,
 						proxiTokNormalCustomRedirects: [],
 
 						proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor],
@@ -223,6 +230,7 @@ function initDefaults() {
 					() => resolve()
 				)
 			})
+			})
 	})
 }
 
diff --git a/src/assets/javascripts/translate/translate.js b/src/assets/javascripts/translate/translate.js
index 2c500759..8da81d10 100644
--- a/src/assets/javascripts/translate/translate.js
+++ b/src/assets/javascripts/translate/translate.js
@@ -91,21 +91,21 @@ init()
 browser.storage.onChanged.addListener(init)
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects = val
+		simplyTranslateNormalRedirectsChecks = [...redirects.simplyTranslate.normal]
 		lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = simplyTranslateNormalCustomRedirects.indexOf(instance)
+			if (a > -1) simplyTranslateNormalCustomRedirects.splice(a, 1)
+
 			const i = lingvaNormalRedirectsChecks.indexOf(instance)
 			if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1)
 		}
 		browser.storage.local.set({
 			translateRedirects: redirects,
-			simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal,
-			simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor,
-			simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p,
-			simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki,
+			simplyTranslateNormalRedirectsChecks,
 			lingvaNormalRedirectsChecks,
-			lingvaTorRedirectsChecks: redirects.lingva.tor,
 		})
 	})
 }
@@ -309,19 +309,24 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
-				browser.storage.local.get("cloudflareBlackList", async r => {
-					lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
-					for (const instance of r.cloudflareBlackList) {
-						const i = lingvaNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1)
-					}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		simplyTranslateNormalCustomRedirects = [...redirects.simplyTranslate.normal]
+		lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
+		console.log(r.offlineBlackList)
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = simplyTranslateNormalCustomRedirects.indexOf(instance)
+			if (a > -1) simplyTranslateNormalCustomRedirects.splice(a, 1)
+
+			const b = lingvaNormalRedirectsChecks.indexOf(instance)
+			if (b > -1) lingvaNormalRedirectsChecks.splice(b, 1)
+		}
 					browser.storage.local.set(
 						{
 							translateDisable: false,
 							translateFrontend: "simplyTranslate",
 							translateRedirects: redirects,
 
-							simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal],
+							simplyTranslateNormalRedirectsChecks,
 							simplyTranslateNormalCustomRedirects: [],
 
 							simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor],
@@ -333,7 +338,7 @@ function initDefaults() {
 							simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki],
 							simplyTranslateLokiCustomRedirects: [],
 
-							lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks,
+							lingvaNormalRedirectsChecks,
 							lingvaNormalCustomRedirects: [],
 
 							lingvaTorRedirectsChecks: [...redirects.lingva.tor],
diff --git a/src/assets/javascripts/twitter.js b/src/assets/javascripts/twitter.js
index b3c33560..83a9685d 100644
--- a/src/assets/javascripts/twitter.js
+++ b/src/assets/javascripts/twitter.js
@@ -17,17 +17,16 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList"], r => {
+	browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList", "offlineBlackList"], r => {
 		redirects.nitter = val
 		nitterNormalRedirectsChecks = [...redirects.nitter.normal]
-		for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
+		for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList, ...r.offlineBlackList]) {
 			let i = nitterNormalRedirectsChecks.indexOf(instance)
 			if (i > -1) nitterNormalRedirectsChecks.splice(i, 1)
 		}
 		browser.storage.local.set({
 			twitterRedirects: redirects,
 			nitterNormalRedirectsChecks,
-			nitterTorRedirectsChecks: [...redirects.nitter.tor],
 		})
 	})
 }
@@ -224,19 +223,19 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
-				browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList"], async r => {
-					nitterNormalRedirectsChecks = [...redirects.nitter.normal]
-					for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
-						let i = nitterNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) nitterNormalRedirectsChecks.splice(i, 1)
-					}
+	browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList", "offlineBlackList"], async r => {
+		nitterNormalRedirectsChecks = [...redirects.nitter.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList, ...r.offlineBlackList]) {
+			let i = nitterNormalRedirectsChecks.indexOf(instance)
+			if (i > -1) nitterNormalRedirectsChecks.splice(i, 1)
+		}
 					browser.storage.local.set(
 						{
 							disableTwitter: false,
 							twitterRedirects: redirects,
 							twitterRedirectType: "both",
 
-							nitterNormalRedirectsChecks: nitterNormalRedirectsChecks,
+							nitterNormalRedirectsChecks,
 							nitterNormalCustomRedirects: [],
 
 							nitterTorRedirectsChecks: [...redirects.nitter.tor],
@@ -251,7 +250,7 @@ function initDefaults() {
 						() => resolve()
 					)
 				})
-			})
+})
 	})
 }
 
diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js
index d881eba1..c6cecc05 100644
--- a/src/assets/javascripts/utils.js
+++ b/src/assets/javascripts/utils.js
@@ -25,7 +25,7 @@ function getRandomInstance(instances) {
 
 let cloudflareBlackList = []
 let authenticateBlackList = []
-let offlineBlacklist = []
+let offlineBlackList = []
 async function initBlackList() {
 	return new Promise(resolve => {
 		fetch("/instances/blacklist.json")
@@ -33,7 +33,7 @@ async function initBlackList() {
 			.then(data => {
 				cloudflareBlackList = JSON.parse(data).cloudflare
 				authenticateBlackList = JSON.parse(data).authenticate
-				offlineBlacklist = JSON.parse(data).offlineBlacklist
+				offlineBlackList = JSON.parse(data).offline
 				resolve()
 			})
 	})
@@ -62,6 +62,7 @@ function updateInstances() {
 			invidious: instances.invidious,
 			piped: instances.piped,
 			pipedMaterial: instances.pipedMaterial,
+			cloudtube: instances.cloudtube
 		})
 		twitterHelper.setRedirects(instances.nitter)
 		instagramHelper.setRedirects(instances.bibliogram)
@@ -164,7 +165,7 @@ async function processDefaultCustomInstances(target, name, protocol, document) {
 		...redirects[name][protocol].map(x => {
 			const cloudflare = cloudflareBlackList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : ""
 			const authenticate = authenticateBlackList.includes(x) ? ' <span style="color:orange;">authenticate</span>' : ""
-			const offline = offlineBlacklist.includes(x) ? ' <span style="color:grey;">offline</span>' : ""
+			const offline = offlineBlackList.includes(x) ? ' <span style="color:grey;">offline</span>' : ""
 
 			let ms = instancesLatency[x]
 			let latencyColor = ms <= 1000 ? "green" : ms <= 2000 ? "orange" : "red"
@@ -285,30 +286,22 @@ function pingOnce(href) {
 					resolve(5000 + http.status)
 				}
 			}
-
 		}
 		http.open("GET", `${href}?_=${new Date().getTime()}`, true)
 		started = new Date().getTime()
 		http.send(null)
 	})
 }
- 
 
 async function testLatency(element, instances, frontend) {
 	return new Promise(async resolve => {
 		let myList = {}
 		let latencyThreshold
 		let redirectsChecks = []
-		browser.storage.local.get(
-			[
-				"latencyThreshold",
-				`${frontend}NormalRedirectsChecks`
-			],
-			r => {
-				latencyThreshold = r.latencyThreshold
-				redirectsChecks = r[`${frontend}NormalRedirectsChecks`]
-			}
-		)
+		browser.storage.local.get(["latencyThreshold", `${frontend}NormalRedirectsChecks`], r => {
+			latencyThreshold = r.latencyThreshold
+			redirectsChecks = r[`${frontend}NormalRedirectsChecks`]
+		})
 		for (const href of instances)
 			await ping(href).then(time => {
 				if (time) {
diff --git a/src/assets/javascripts/wikipedia.js b/src/assets/javascripts/wikipedia.js
index 04191d1a..cecb3189 100644
--- a/src/assets/javascripts/wikipedia.js
+++ b/src/assets/javascripts/wikipedia.js
@@ -17,10 +17,10 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects.wikiless = val
 		wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = wikilessNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) wikilessNormalRedirectsChecks.splice(a, 1)
 		}
@@ -200,18 +200,18 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
-				browser.storage.local.get("cloudflareBlackList", async r => {
-					wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]
-					for (const instance of r.cloudflareBlackList) {
-						let i = wikilessNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) wikilessNormalRedirectsChecks.splice(i, 1)
-					}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = wikilessNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) wikilessNormalRedirectsChecks.splice(a, 1)
+		}
 					browser.storage.local.set(
 						{
 							disableWikipedia: true,
 							wikipediaRedirects: redirects,
 
-							wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks,
+							wikilessNormalRedirectsChecks,
 							wikilessNormalCustomRedirects: [],
 
 							wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
diff --git a/src/assets/javascripts/youtube/youtube.js b/src/assets/javascripts/youtube/youtube.js
index 7e02dcd2..63e58d5b 100644
--- a/src/assets/javascripts/youtube/youtube.js
+++ b/src/assets/javascripts/youtube/youtube.js
@@ -30,14 +30,13 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
-		for (let i = 0; i < frontends.length; i++) {
-			redirects.frontends = val.frontends
-		}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
+			redirects = val
 		invidiousNormalRedirectsChecks = [...redirects.invidious.normal]
 		pipedNormalRedirectsChecks = [...redirects.piped.normal]
 		pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal]
-		for (const instance of r.cloudflareBlackList) {
+		cloudtubeNormalRedirectsChecks = [...redirects.cloudtube.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = invidiousNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1)
 
@@ -450,13 +449,12 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
-				browser.storage.local.get("cloudflareBlackList", async r => {
+				browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
 					invidiousNormalRedirectsChecks = [...redirects.invidious.normal]
 					pipedNormalRedirectsChecks = [...redirects.piped.normal]
 					pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal]
 					cloudtubeNormalRedirectsChecks = [...redirects.cloudtube.normal]
-
-					for (const instance of r.cloudflareBlackList) {
+					for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 						const a = invidiousNormalRedirectsChecks.indexOf(instance)
 						if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1)
 
@@ -467,9 +465,8 @@ function initDefaults() {
 						if (c > -1) pipedMaterialNormalRedirectsChecks.splice(c, 1)
 
 						const d = cloudtubeNormalRedirectsChecks.indexOf(instance)
-						if (d > -1) cloudtubeNormalRedirectsChecks.indexOf(instance)
+						if (c > -1) cloudtubeNormalRedirectsChecks.splice(d, 1)
 					}
-
 					browser.storage.local.set(
 						{
 							disableYoutube: false,
@@ -478,7 +475,7 @@ function initDefaults() {
 							youtubeRedirects: redirects,
 							youtubeFrontend: "invidious",
 
-							invidiousNormalRedirectsChecks: invidiousNormalRedirectsChecks,
+							invidiousNormalRedirectsChecks,
 							invidiousNormalCustomRedirects: [],
 
 							invidiousTorRedirectsChecks: [...redirects.invidious.tor],
@@ -490,7 +487,7 @@ function initDefaults() {
 							invidiousLokiRedirectsChecks: [...redirects.invidious.loki],
 							invidiousLokiCustomRedirects: [],
 
-							pipedNormalRedirectsChecks: pipedNormalRedirectsChecks,
+							pipedNormalRedirectsChecks,
 							pipedNormalCustomRedirects: [],
 
 							pipedTorRedirectsChecks: [...redirects.piped.tor],
diff --git a/src/assets/javascripts/youtubeMusic.js b/src/assets/javascripts/youtubeMusic.js
index 3ff9a174..753ce7ad 100644
--- a/src/assets/javascripts/youtubeMusic.js
+++ b/src/assets/javascripts/youtubeMusic.js
@@ -19,11 +19,11 @@ for (let i = 0; i < frontends.length; i++) {
 }
 
 function setRedirects(val) {
-	browser.storage.local.get("cloudflareBlackList", r => {
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => {
 		redirects = val
 		beatbumpNormalRedirectsChecks = [...redirects.beatbump.normal]
 		hyperpipeNormalRedirectsChecks = [...redirects.hyperpipe.normal]
-		for (const instance of r.cloudflareBlackList) {
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
 			const a = beatbumpNormalRedirectsChecks.indexOf(instance)
 			if (a > -1) beatbumpNormalRedirectsChecks.splice(a, 1)
 
@@ -266,25 +266,23 @@ function initDefaults() {
 				for (let i = 0; i < frontends.length; i++) {
 					redirects[frontends[i]] = dataJson[frontends[i]]
 				}
-				browser.storage.local.get("cloudflareBlackList", async r => {
-					beatbumpNormalRedirectsChecks = [...redirects.beatbump.normal]
-					hyperpipeNormalRedirectsChecks = [...redirects.hyperpipe.normal]
-					for (const instance of r.cloudflareBlackList) {
-						let i
-
-						i = beatbumpNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) beatbumpNormalRedirectsChecks.splice(i, 1)
-
-						i = hyperpipeNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) hyperpipeNormalRedirectsChecks.splice(i, 1)
-					}
+	browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => {
+		beatbumpNormalRedirectsChecks = [...redirects.beatbump.normal]
+		hyperpipeNormalRedirectsChecks = [...redirects.hyperpipe.normal]
+		for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) {
+			const a = beatbumpNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) beatbumpNormalRedirectsChecks.splice(a, 1)
+
+			const b = hyperpipeNormalRedirectsChecks.indexOf(instance)
+			if (b > -1) hyperpipeNormalRedirectsChecks.splice(b, 1)
+		}
 					browser.storage.local.set(
 						{
 							disableYoutubeMusic: false,
 							youtubeMusicFrontend: "hyperpipe",
 							youtubeMusicRedirects: redirects,
 
-							beatbumpNormalRedirectsChecks: beatbumpNormalRedirectsChecks,
+							beatbumpNormalRedirectsChecks,
 							beatbumpNormalCustomRedirects: [],
 
 							beatbumpTorRedirectsChecks: [...redirects.beatbump.tor],
@@ -296,7 +294,7 @@ function initDefaults() {
 							beatbumpLokiRedirectsChecks: [...redirects.beatbump.loki],
 							beatbumpLokiCustomRedirects: [],
 
-							hyperpipeNormalRedirectsChecks: hyperpipeNormalRedirectsChecks,
+							hyperpipeNormalRedirectsChecks,
 							hyperpipeNormalCustomRedirects: [],
 
 							hyperpipeTorRedirectsChecks: [...redirects.hyperpipe.tor],