about summary refs log tree commit diff stats
path: root/src/pages
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/background/background.js54
-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
-rw-r--r--src/pages/popup/popup.js2
-rw-r--r--src/pages/widgets/head.pug2
-rw-r--r--src/pages/widgets/links.pug5
-rw-r--r--src/pages/widgets/switches.pug5
8 files changed, 113 insertions, 158 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 33f0d40b..77128612 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -6,40 +6,34 @@ import servicesHelper from "../../assets/javascripts/services.js"
 
 window.browser = window.browser || window.chrome
 
-browser.runtime.onInstalled.addListener(details => {
+browser.runtime.onInstalled.addListener(async details => {
 	if (details.previousVersion != browser.runtime.getManifest().version) {
 		// ^Used to prevent this running when debugging with auto-reload
-		fetch("/instances/blacklist.json")
-			.then(response => response.text())
-			.then(async data => {
-				browser.storage.local.set({ blacklists: JSON.parse(data) }, async () => {
-					switch (details.reason) {
-						case "install":
-							browser.storage.local.get("options", async r => {
-								if (!r.options) {
-									await generalHelper.initDefaults()
-									await servicesHelper.initDefaults()
-								}
-							})
-							break
-						case "update":
-							switch (details.previousVersion) {
-								case "2.2.0":
-								case "2.2.1":
-									browser.storage.local.get("options", async r => {
-										if (!r.options) {
-											await generalHelper.initDefaults()
-											await servicesHelper.initDefaults()
-											await servicesHelper.upgradeOptions()
-										}
-									})
-									break
-								default:
-									await servicesHelper.processUpdate()
-							}
+		switch (details.reason) {
+			case "install":
+				browser.storage.local.get("options", async r => {
+					if (!r.options) {
+						await generalHelper.initDefaults()
+						await servicesHelper.initDefaults()
 					}
 				})
-			})
+				break
+			case "update":
+				switch (details.previousVersion) {
+					case "2.2.0":
+					case "2.2.1":
+						browser.storage.local.get("options", async r => {
+							if (!r.options) {
+								await generalHelper.initDefaults()
+								await servicesHelper.initDefaults()
+								await servicesHelper.upgradeOptions()
+							}
+						})
+						break
+					default:
+						await servicesHelper.processUpdate()
+				}
+		}
 	}
 })
 
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
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index b2f2c299..aa3fb0d7 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -85,7 +85,7 @@ browser.storage.local.get(["options", "redirects"], r => {
 				frontend = service[1]
 				service = service[0]
 				let isCustom = false
-				for (const network in config.networks) if (r.options[frontend][network].custom.indexOf(instance) > -1) isCustom = true
+				for (const network in config.networks) if (r.options[frontend].indexOf(instance) > -1) isCustom = true
 			}
 			divs[service].current.classList.remove("hide")
 			divs[service].all.classList.add("hide")
diff --git a/src/pages/widgets/head.pug b/src/pages/widgets/head.pug
index 15e6d8d6..0c6e9fdb 100644
--- a/src/pages/widgets/head.pug
+++ b/src/pages/widgets/head.pug
@@ -3,5 +3,5 @@ head
     meta(name="viewport" content="width=device-width, initial-scale=1")
     link(rel="icon" type="image/x-icon" href="../../../assets/images/libredirect.svg")
     link(href="../stylesheets/styles.css" rel="stylesheet")
-    title General
+    title Settings
     script(type="module" src="./init.js")
\ No newline at end of file
diff --git a/src/pages/widgets/links.pug b/src/pages/widgets/links.pug
index 8c5a3915..82e82dbe 100644
--- a/src/pages/widgets/links.pug
+++ b/src/pages/widgets/links.pug
@@ -7,7 +7,10 @@ section(class="links" id="links")
     each val, key in services
         div(class="title")
             a(href="#"+key)
-                img(src=`/assets/images/${key}-icon.${services[key].imageType}`)
+                if services[key].imageType == 'svgMono'
+                    img(src=`/assets/images/${key}-icon.svg`)
+                else
+                    img(src=`/assets/images/${key}-icon.${services[key].imageType}`)
                 span(data-localise="__MSG_"+key+"__")=services[key].name
 
     div(class="title")
diff --git a/src/pages/widgets/switches.pug b/src/pages/widgets/switches.pug
index 390c414d..7054ea72 100644
--- a/src/pages/widgets/switches.pug
+++ b/src/pages/widgets/switches.pug
@@ -1,6 +1,9 @@
 each val, service in services    
     div(class=service + " some-block")
         a(class="title" href=services[service].url)
-            img(src="../../assets/images/"+service+"-icon."+services[service].imageType)
+            if services[service].imageType == 'svgMono'
+                img(src=`../../assets/images/${service}-icon.svg`)
+            else
+                img(src=`../../assets/images/${service}-icon.${services[service].imageType}`)
             h4(data-localise="__MSG_"+service+"__")=services[service].name
         input(class=service + "-enabled" type="checkbox")
\ No newline at end of file