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/services.js185
-rw-r--r--src/assets/javascripts/utils.js4
2 files changed, 65 insertions, 124 deletions
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index 9e3570d0..4b8f9188 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -2,14 +2,12 @@ window.browser = window.browser || window.chrome
 
 import utils from "./utils.js"
 
-let config, options, targets
+let config, options
 
 function init() {
 	return new Promise(async resolve => {
-		browser.storage.local.get(["options", "targets", "embedTabs"], r => {
+		browser.storage.local.get(["options"], r => {
 			options = r.options
-			targets = r.targets
-			embedTabs = r.embedTabs
 			fetch("/config.json")
 				.then(response => response.text())
 				.then(configData => {
@@ -38,25 +36,18 @@ function all(service, frontend, options, config) {
 }
 
 function regexArray(service, url, config, frontend) {
-	if (config.services[service].targets == "datajson") {
-		for (const instance of targets[service]) {
-			if (instance.startsWith(utils.protocolHost(url))) return true
-		}
-	} else {
-		let targetList = config.services[service].targets
-		if (frontend && config.services[service].frontends[frontend].excludeTargets)
-			for (const i in config.services[service].frontends[frontend].excludeTargets) {
-				targetList = targetList.splice(i, 1)
-			}
-		for (const targetString in targetList) {
-			const target = new RegExp(targetList[targetString])
-			if (target.test(url.href)) return true
+	let targetList = config.services[service].targets
+	if (frontend && config.services[service].frontends[frontend].excludeTargets)
+		for (const i in config.services[service].frontends[frontend].excludeTargets) {
+			targetList = targetList.splice(i, 1)
 		}
+	for (const targetString in targetList) {
+		const target = new RegExp(targetList[targetString])
+		if (target.test(url.href)) return true
 	}
 	return false
 }
 
-let embedTabs = {}
 function redirect(url, type, initiator, forceRedirection, tabId) {
 	if (type != "main_frame" && type != "sub_frame" && type != "image") return
 	let randomInstance
@@ -79,17 +70,7 @@ function redirect(url, type, initiator, forceRedirection, tabId) {
 		}
 		if (instanceList.length === 0) return
 
-		if ((type == "sub_frame" || type == "image") && embedTabs[tabId] && embedTabs[tabId][frontend] !== undefined) {
-			randomInstance = embedTabs[tabId][frontend]
-		} else {
-			randomInstance = utils.getRandomInstance(instanceList)
-		}
-
-		if ((type == "sub_frame" || type == "image") && embedTabs[tabId] === undefined) {
-			embedTabs[tabId] = {}
-			embedTabs[tabId][frontend] = randomInstance
-			browser.storage.local.set(embedTabs)
-		}
+		randomInstance = utils.getRandomInstance(instanceList)
 
 		break
 	}
@@ -491,7 +472,7 @@ function reverse(url, urlString) {
 		await init()
 		let protocolHost
 		if (!urlString) protocolHost = utils.protocolHost(url)
-		else protocolHost = url.match(/https?:\/{2}(?:[^\s\/]+\.)+[a-zA-Z0-9]+/)[0]
+		else protocolHost = url.match(/^https?:\/{2}/)[0]
 		for (const service in config.services) {
 			if (!all(service, null, options, config).includes(protocolHost)) continue
 
@@ -530,9 +511,7 @@ function initDefaults() {
 			.then(configData => {
 				browser.storage.local.get(["options"], r => {
 					let options = r.options
-					let targets = {}
 					let config = JSON.parse(configData)
-					const localstorage = {}
 					for (const service in config.services) {
 						options[service] = {}
 						for (const defaultOption in config.services[service].options) {
@@ -545,7 +524,7 @@ function initDefaults() {
 						}
 					}
 					browser.storage.local.set(
-						{ options, targets, localstorage, embedTabs: {} },
+						{ options },
 						() => resolve()
 					)
 				})
@@ -553,62 +532,51 @@ function initDefaults() {
 	})
 }
 
+function backupOptions() {
+	return new Promise(resolve => {
+		browser.storage.local.get(
+			"options", r => {
+				const oldOptions = r.options
+				browser.storage.local.clear(() => {
+					browser.storage.local.set({ oldOptions },
+						() => resolve()
+					)
+				})
+
+			})
+	})
+}
+
 function upgradeOptions() {
 	return new Promise(resolve => {
 		fetch("/config.json")
 			.then(response => response.text())
 			.then(configData => {
-				browser.storage.local.get(null, r => {
+				browser.storage.local.get(["oldOptions", "options"], r => {
+					const oldOptions = r.oldOptions
 					let options = r.options
 					const config = JSON.parse(configData)
-					options.exceptions = r.exceptions
-					if (r.theme != "DEFAULT") options.theme = r.theme
-					options.popupServices = r.popupFrontends
-					let tmp = options.popupServices.indexOf("tikTok")
-					if (tmp > -1) {
-						options.popupServices.splice(tmp, 1)
-						options.popupServices.push("tiktok")
-					}
-					tmp = options.popupServices.indexOf("sendTarget")
-					if (tmp > -1) {
-						options.popupServices.splice(tmp, 1)
-						options.popupServices.push("sendFiles")
-					}
-					switch (r.onlyEmbeddedVideo) {
-						case "onlyNotEmbedded":
-							options.youtube.redirectType = "main_frame"
-						case "onlyEmbedded":
-							options.youtube.redirectType = "sub_frame"
-						case "both":
-							options.youtube.redirectType = "both"
-					}
+
+					options.exceptions = oldOptions.exceptions
+					options.theme = oldOptions.theme
+					options.popupServices = oldOptions.popupServices
+
 					for (const service in config.services) {
-						let oldService
-						switch (service) {
-							case "tiktok":
-								oldService = "tikTok"
-								break
-							case "sendFiles":
-								oldService = "sendTarget"
-								break
-							default:
-								oldService = service
-						}
-						options[service].enabled = !r["disable" + utils.camelCase(oldService)]
-						if (r[oldService + "Frontend"]) {
-							if (r[oldService + "Frontend"] == "yatte") options[service].frontend = "yattee"
-							else options[service].frontend = r[oldService + "Frontend"]
-						}
-						if (r[oldService + "RedirectType"]) options[service].redirectType = r[oldService + "RedirectType"]
-						for (const frontend in config.services[service].frontends) {
-							for (const network in config.networks) {
-								let protocol
-								if (network == "clearnet") protocol = "normal"
-								else protocol = network
-							}
+						options[service] = oldOptions[service]
+						options[service].remove("embedFrontend")
+
+						for (const frontend in network.services[service].frontends) {
+							options[frontend] = [
+								...oldOptions[frontend].clearnet.enabled,
+								...oldOptions[frontend].clearnet.custom
+							]
 						}
 					}
-					browser.storage.local.set({ options }, () => resolve())
+					browser.storage.local.set({ options }, () => {
+						browser.storage.local.remove("oldOptions", () => {
+							resolve()
+						})
+					})
 				})
 			})
 	})
@@ -616,51 +584,23 @@ function upgradeOptions() {
 
 function processUpdate() {
 	return new Promise(resolve => {
-		fetch("/instances/data.json")
+		fetch("/config.json")
 			.then(response => response.text())
-			.then(data => {
-				fetch("/config.json")
-					.then(response => response.text())
-					.then(configData => {
-						browser.storage.local.get(["options", "targets"], async r => {
-							let redirects = JSON.parse(data)
-							let options = r.options
-							let targets = r.targets
-							let config = JSON.parse(configData)
-							for (const service in config.services) {
-								if (!options[service]) options[service] = {}
-								if (config.services[service].targets == "datajson") {
-									targets[service] = redirects[service]
-									delete redirects[service]
-								}
-								for (const defaultOption in config.services[service].options) {
-									if (options[service][defaultOption] === undefined) {
-										options[service][defaultOption] = config.services[service].options[defaultOption]
-									}
-								}
-								for (const frontend in config.services[service].frontends) {
-									if (config.services[service].frontends[frontend].instanceList) {
-										if (!options[frontend]) options[frontend] = {}
-										for (const network in config.networks) {
-											if (!options[frontend]) {
-												options[frontend] = []
-												if (network == "clearnet") {
-													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)
-														}
-													}
-												}
-											}
-										}
-									}
-								}
+			.then(configJson => {
+				let config = JSON.parse(configJson)
+				browser.storage.local.get(["options"], async r => {
+					let options = r.options
+					for (const service in config.services) {
+						if (!options[service]) options[service] = {}
+						for (const defaultOption in config.services[service].options) {
+							if (options[service][defaultOption] === undefined) {
+								options[service][defaultOption] = config.services[service].options[defaultOption]
 							}
-							browser.storage.local.set({ redirects, options, targets })
-							resolve()
-						})
-					})
+						}
+					}
+					browser.storage.local.set({ options })
+					resolve()
+				})
 			})
 	})
 }
@@ -710,6 +650,7 @@ export default {
 	reverse,
 	initDefaults,
 	upgradeOptions,
+	backupOptions,
 	processUpdate,
 	modifyContentSecurityPolicy,
 }
diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js
index 86b9b402..3a7bd839 100644
--- a/src/assets/javascripts/utils.js
+++ b/src/assets/javascripts/utils.js
@@ -73,7 +73,7 @@ function switchInstance(test) {
 function getBlacklist() {
 	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.open("GET", "https://raw.githubusercontent.com/libredirect/instances/main/blacklist.json", true)
 		http.onreadystatechange = () => {
 			if (http.status === 200 && http.readyState == XMLHttpRequest.DONE) {
 				resolve(JSON.parse(http.responseText))
@@ -87,7 +87,7 @@ function getBlacklist() {
 function getList() {
 	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.open("GET", "https://raw.githubusercontent.com/libredirect/instances/main/data.json", true)
 		http.onreadystatechange = () => {
 			if (http.status === 200 && http.readyState == XMLHttpRequest.DONE) {
 				resolve(JSON.parse(http.responseText))