From 6afbe6ac92c835eaeeb28190f07f9fa5092c9672 Mon Sep 17 00:00:00 2001
From: Kyryl <91323838+kirizdev@users.noreply.github.com>
Date: Mon, 13 Feb 2023 18:46:42 +0000
Subject: [PATCH] Refactor createList function
---
src/pages/options/index.js | 121 +++++++++++++++++++------------------
1 file changed, 61 insertions(+), 60 deletions(-)
diff --git a/src/pages/options/index.js b/src/pages/options/index.js
index f122f3f..3f37d82 100644
--- a/src/pages/options/index.js
+++ b/src/pages/options/index.js
@@ -181,68 +181,69 @@ async function processCustomInstances(frontend, document) {
}
function createList(frontend, networks, document, redirects, blacklist) {
- for (const network in networks) {
- if (redirects[frontend]) {
- if (redirects[frontend][network].length > 0) {
- document.getElementById(frontend).getElementsByClassName("custom-instance")[0].placeholder = redirects[frontend].clearnet[0]
- document.getElementById(frontend)
- .getElementsByClassName(network)[0]
- .getElementsByClassName("checklist")[0]
- .innerHTML = [
- `
-
${utils.camelCase(network)}
- `,
- ...redirects[frontend][network]
- .sort((a, b) =>
- (blacklist.cloudflare.includes(a) && !blacklist.cloudflare.includes(b))
- )
- .map(x => {
- const cloudflare = blacklist.cloudflare.includes(x) ?
- `
- cloudflare
- ` : ""
+ for (const network in networks) {
+ const checklist = document.getElementById(frontend)
+ .getElementsByClassName(network)[0]
+ .getElementsByClassName("checklist")[0]
- const warnings = [cloudflare].join(" ")
- return `
-
- ${x}${warnings}
-
-
-
`
- }),
- '
'
- ].join("\n
\n")
+ if (!redirects[frontend]) {
+ checklist.innerHTML = 'No instances found.
'
+ break
+ }
+ const instances = redirects[frontend][network]
+ if (!instances || instances.length === 0) continue
- for (const x of redirects[frontend][network]) {
- document.getElementById(frontend)
- .getElementsByClassName(network)[0]
- .getElementsByClassName("checklist")[0]
- .getElementsByClassName(`add-${x}`)[0]
- .addEventListener("click", async () => {
- let options = await utils.getOptions()
- let customInstances = options[frontend]
- if (!customInstances.includes(x)) {
- customInstances.push(x)
- options = await utils.getOptions()
- options[frontend] = customInstances
- browser.storage.local.set({ options }, () => {
- calcCustomInstances(frontend)
- })
- }
- })
- }
- }
- } else {
- document.getElementById(frontend).getElementsByClassName(network)[0].getElementsByClassName("checklist")[0].innerHTML =
- `No instances found.
`
- break
- }
+ document.getElementById(frontend)
+ .getElementsByClassName("custom-instance")[0]
+ .placeholder = redirects[frontend].clearnet[0]
- }
+ const sortedInstances = instances
+ .sort((a, b) => (blacklist.cloudflare.includes(a) && !blacklist.cloudflare.includes(b)))
+
+ const content = sortedInstances
+ .map(x => {
+ const cloudflare = blacklist.cloudflare.includes(x) ?
+ `
+ cloudflare
+ ` : ""
+
+ const warnings = [cloudflare].join(" ")
+ return `
+
+ ${x}${warnings}
+
+
+
`
+ })
+
+ checklist.innerHTML = [
+ `
+
${utils.camelCase(network)}
+ `,
+ ...content,
+ "
"
+ ].join("\n
\n")
+
+ for (const instance of instances) {
+ checklist.getElementsByClassName(`add-${instance}`)[0]
+ .addEventListener("click", async () => {
+ let options = await utils.getOptions()
+ let customInstances = options[frontend]
+ if (!customInstances.includes(instance)) {
+ customInstances.push(instance)
+ options = await utils.getOptions()
+ options[frontend] = customInstances
+ browser.storage.local.set({options}, () => {
+ calcCustomInstances(frontend)
+ })
+ }
+ })
+ }
+ }
}
const r = window.location.href.match(/#(.*)/)
@@ -288,4 +289,4 @@ async function ping(frontend) {
span.innerHTML = `${text}`
}
-}
\ No newline at end of file
+}