about summary refs log tree commit diff stats
path: root/src/pages/options
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/options')
-rw-r--r--src/pages/options/index.js154
-rw-r--r--src/pages/options/widgets/general.js35
-rw-r--r--src/pages/options/widgets/services.pug14
3 files changed, 79 insertions, 124 deletions
diff --git a/src/pages/options/index.js b/src/pages/options/index.js
index a735110a..6fb8e452 100644
--- a/src/pages/options/index.js
+++ b/src/pages/options/index.js
@@ -53,124 +53,86 @@ function loadPage(path) {
 	let stateObj = { id: "100" }
 	window.history.pushState(stateObj, "Page 2", `/pages/options/index.html#${path}`)
 
-	const service = path;
-	divs[service] = {}
-	for (const option in config.services[service].options) {
-		divs[service][option] = document.getElementById(`${service}-${option}`)
-
-		if (typeof config.services[service].options[option] == "boolean") divs[service][option].checked = options[service][option]
-		else divs[service][option].value = options[service][option]
-
-		divs[service][option].addEventListener("change", () => {
-			browser.storage.local.get("options", r => {
-				let options = r.options
-				if (typeof config.services[service].options[option] == "boolean") options[service][option] = divs[service][option].checked
-				else options[service][option] = divs[service][option].value
-				browser.storage.local.set({ options })
-				changeFrontendsSettings(service)
+	if (path != 'general' && path != 'about') {
+		const service = path;
+
+		divs[service] = {}
+		for (const option in config.services[service].options) {
+			divs[service][option] = document.getElementById(`${service}-${option}`)
+			if (typeof config.services[service].options[option] == "boolean") divs[service][option].checked = options[service][option]
+			else divs[service][option].value = options[service][option]
+
+			divs[service][option].addEventListener("change", () => {
+				browser.storage.local.get("options", r => {
+					let options = r.options
+					if (typeof config.services[service].options[option] == "boolean") options[service][option] = divs[service][option].checked
+					else options[service][option] = divs[service][option].value
+					browser.storage.local.set({ options })
+					changeFrontendsSettings(service)
+				})
 			})
-		})
-	}
+		}
 
-	if (Object.keys(config.services[service].frontends).length > 1) {
-		changeFrontendsSettings(service)
-	}
+		if (Object.keys(config.services[service].frontends).length > 1) {
+			changeFrontendsSettings(service)
+		}
 
-	for (const frontend in config.services[service].frontends) {
-		if (config.services[service].frontends[frontend].instanceList) {
-			for (const network in config.networks) {
-				processDefaultCustomInstances(frontend, network, document)
+		for (const frontend in config.services[service].frontends) {
+			if (config.services[service].frontends[frontend].instanceList) {
+				processDefaultCustomInstances(frontend, config.networks, document)
 			}
 		}
 	}
 }
 
-const r = window.location.href.match(/#(.*)/)
-if (r) loadPage(r[1])
-else loadPage("general")
 
-async function processDefaultCustomInstances(frontend, network, document) {
-	let networkElement = document.getElementById(frontend).getElementsByClassName(network)[0]
+async function processDefaultCustomInstances(frontend, networks, document) {
 	let customInstances = []
-	let checkListElement = networkElement.getElementsByClassName("checklist")[0]
-
-	let cloudflareBlackList = []
-	let authenticateBlackList = []
-	await new Promise(resolve => {
-		fetch("/instances/blacklist.json")
-			.then(response => response.text())
-			.then(data => {
-				cloudflareBlackList = JSON.parse(data).cloudflare
-				authenticateBlackList = JSON.parse(data).authenticate
-				resolve()
-			})
-	})
-
-	let frontendDefaultRedirects
-
-	let redirects, options
-
+	let options
 	await new Promise(async resolve =>
-		browser.storage.local.get(["options", "redirects",], r => {
-			frontendDefaultRedirects = r.options[frontend][network].enabled
-			customInstances = r.options[frontend][network].custom
+		browser.storage.local.get(["options"], r => {
+			customInstances = r.options[frontend]
 			options = r.options
-			redirects = r.redirects
 			resolve()
 		})
 	)
 
-	function calcCheckBoxes() {
-		for (const element of checkListElement.getElementsByTagName("input")) {
-			element.checked = frontendDefaultRedirects.includes(element.className)
-		}
-	}
-	if (redirects[frontend][network].length > 0)
-		checkListElement.innerHTML = [
-			`
+	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) =>
-					(cloudflareBlackList.includes(a) && !cloudflareBlackList.includes(b))
-					||
-					(authenticateBlackList.includes(a) && !authenticateBlackList.includes(b))
-				)
-				.map(x => {
-					const cloudflare = cloudflareBlackList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : ""
-					const authenticate = authenticateBlackList.includes(x) ? ' <span style="color:orange;">authenticate</span>' : ""
-
-					let warnings = [cloudflare, authenticate].join(" ")
-					return `
+				...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>
-						<input type="checkbox" class="${x}"/>
                   	</div>`
-				}),
-			'<br>'
-		].join("\n<hr>\n")
+					}),
+				'<br>'
+			].join("\n<hr>\n")
+		}
+	}
 
 	localise.localisePage()
 
-	calcCheckBoxes()
-
-	for (let element of checkListElement.getElementsByTagName("input")) {
-		networkElement.getElementsByClassName(element.className)[0].addEventListener("change", async event => {
-			if (event.target.checked) frontendDefaultRedirects.push(element.className)
-			else {
-				let index = frontendDefaultRedirects.indexOf(element.className)
-				if (index > -1) frontendDefaultRedirects.splice(index, 1)
-			}
-
-			options[frontend][network].enabled = frontendDefaultRedirects
-			browser.storage.local.set({ options }, () => calcCheckBoxes())
-		})
-	}
-
 	function calcCustomInstances() {
 		document.getElementById(frontend).getElementsByClassName("custom-checklist")[0].innerHTML = customInstances
 			.map(
@@ -191,7 +153,7 @@ async function processDefaultCustomInstances(frontend, network, document) {
 			document.getElementById(frontend).getElementsByClassName(`clear-${item}`)[0].addEventListener("click", async () => {
 				let index = customInstances.indexOf(item)
 				if (index > -1) customInstances.splice(index, 1)
-				options[frontend][network].custom = customInstances
+				options[frontend] = customInstances
 				browser.storage.local.set({ options }, () => calcCustomInstances())
 			})
 		}
@@ -208,10 +170,10 @@ async function processDefaultCustomInstances(frontend, network, document) {
 			return
 		}
 		let protocolHostVar = utils.protocolHost(url)
-		if (frontendCustomInstanceInput.validity.valid && !redirects[frontend][network].includes(protocolHostVar)) {
+		if (frontendCustomInstanceInput.validity.valid) {
 			if (!customInstances.includes(protocolHostVar)) {
 				customInstances.push(protocolHostVar)
-				options[frontend][network].custom = customInstances
+				options[frontend] = customInstances
 				browser.storage.local.set({ options }, () => {
 					frontendCustomInstanceInput.value = ""
 					calcCustomInstances()
@@ -219,4 +181,8 @@ async function processDefaultCustomInstances(frontend, network, document) {
 			}
 		}
 	})
-}
\ No newline at end of file
+}
+
+const r = window.location.href.match(/#(.*)/)
+if (r) loadPage(r[1])
+else loadPage("general")
diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js
index 2fd6a9a5..63938d78 100644
--- a/src/pages/options/widgets/general.js
+++ b/src/pages/options/widgets/general.js
@@ -58,20 +58,12 @@ importSettingsElement.addEventListener("change", () => {
 	reader.onload = async () => {
 		const data = JSON.parse(reader.result)
 		if ("theme" in data && "disableImgur" in data && "imgurRedirects" in data) {
-			browser.storage.local.clear(() =>
-				browser.storage.local.set({ ...data }, () => {
-					fetch("/instances/blacklist.json")
-						.then(response => response.text())
-						.then(async data => {
-							browser.storage.local.set({ blacklists: JSON.parse(data) }, async () => {
-								await generalHelper.initDefaults()
-								await servicesHelper.initDefaults()
-								await servicesHelper.upgradeOptions()
-								location.reload()
-							})
-						})
-				})
-			)
+			browser.storage.local.clear(async () => {
+				await generalHelper.initDefaults()
+				await servicesHelper.initDefaults()
+				await servicesHelper.upgradeOptions()
+				location.reload()
+			})
 		} else if ("version" in data) {
 			let options = data
 			delete options.version
@@ -98,16 +90,10 @@ function importError() {
 const resetSettings = document.getElementById("reset-settings")
 resetSettings.addEventListener("click", async () => {
 	resetSettings.innerHTML = "..."
-	browser.storage.local.clear(() => {
-		fetch("/instances/blacklist.json")
-			.then(response => response.text())
-			.then(async data => {
-				browser.storage.local.set({ blacklists: JSON.parse(data) }, async () => {
-					await generalHelper.initDefaults()
-					await servicesHelper.initDefaults()
-					location.reload()
-				})
-			})
+	browser.storage.local.clear(async () => {
+		await generalHelper.initDefaults()
+		await servicesHelper.initDefaults()
+		location.reload()
 	})
 })
 
@@ -170,7 +156,6 @@ browser.storage.local.get("options", r => {
 
 		for (const x of [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]) {
 			document.getElementById(`clear-${x}`).addEventListener("click", () => {
-				console.log(x)
 				let index
 				index = exceptionsCustomInstances.url.indexOf(x)
 				if (index > -1) exceptionsCustomInstances.url.splice(index, 1)
diff --git a/src/pages/options/widgets/services.pug b/src/pages/options/widgets/services.pug
index ddd244d4..dc527c78 100644
--- a/src/pages/options/widgets/services.pug
+++ b/src/pages/options/widgets/services.pug
@@ -28,18 +28,22 @@ each val, service in services
                     option(value="sub_frame" data-localise="__MSG_onlyEmbedded__") Only Embedded
                     option(value="main_frame" data-localise="__MSG_onlyNotEmbedded__") Only Not Embedded
 
+        hr
+
         each val, frontend in services[service].frontends
             if services[service].frontends[frontend].instanceList
                 div(id=frontend)
-                    each val, network in networks
-                        div(class=network)
-                            div(class="checklist")
                     div(class="some-block option-block")
-                        h4(data-localise="__MSG_customInstances__") Custom Instances
+                        h4(data-localise="__MSG_instances__") Add your favorite instances
+                    
                     form(class="custom-instance-form")
                         div(class="some-block option-block")
                             input(class="custom-instance" placeholder=`http://${frontend}.com` type="url" )
                             button(class="add add-instance" type="submit")
                                 svg(xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor")
                                     path(d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z")
-                    div(class="checklist custom-checklist")
\ No newline at end of file
+                    
+                    div(class="checklist custom-checklist")                    
+                    each val, network in networks
+                        div(class=network)
+                            div(class="checklist")
\ No newline at end of file