aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2023-01-07 11:14:35 +0300
committerManeraKai <manerakai@protonmail.com>2023-01-07 11:14:35 +0300
commit6d648dde6114be3e7c8f1c088ce61a790709adee (patch)
treed7a713bd305416d0b3731c291a5dd3c53b0faa5b
parentChanged Update Instances selection mechanism. https://github.com/libredirect/... (diff)
downloadlibredirect-6d648dde6114be3e7c8f1c088ce61a790709adee.zip
Improved UX/UI. Fixed https://github.com/libredirect/libredirect/issues/552
Diffstat (limited to '')
-rw-r--r--src/assets/javascripts/services.js26
-rw-r--r--src/config.json100
-rw-r--r--src/pages/options/index.js8
-rw-r--r--src/pages/options/widgets/about.pug8
-rw-r--r--src/pages/options/widgets/services.pug14
-rw-r--r--src/pages/stylesheets/styles.css6
-rw-r--r--src/pages/widgets/switches.pug2
7 files changed, 103 insertions, 61 deletions
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index 4f3b6be3..845c5f4e 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -22,24 +22,16 @@ function init() {
init()
browser.storage.onChanged.addListener(init)
-function fetchFrontendInstanceList(service, frontend, redirects, options, config) {
- let tmp = []
- if (config.services[service].frontends[frontend].instanceList) {
- for (const network in config.networks) {
- tmp.push(...options[frontend])
- }
- }
- return tmp
-}
-
-function all(service, frontend, options, config, redirects) {
+function all(service, frontend, options, config) {
let instances = []
if (!frontend) {
for (const frontend in config.services[service].frontends) {
- instances.push(...fetchFrontendInstanceList(service, frontend, redirects[frontend], options, config))
+ if (options[frontend]) {
+ instances.push(...options[frontend])
+ }
}
} else {
- instances.push(...fetchFrontendInstanceList(service, frontend, redirects[frontend], options, config))
+ instances.push(...options[frontend])
}
return instances
}
@@ -77,7 +69,7 @@ function redirect(url, type, initiator, forceRedirection) {
if (!regexArray(service, url, config, frontend)) continue
- if (initiator && all(service, null, options, config, redirects).includes(initiator.origin)) return "BYPASSTAB"
+ if (initiator && all(service, null, options, config).includes(initiator.origin)) return "BYPASSTAB"
let instanceList = []
for (const network in options[frontend]) {
@@ -427,7 +419,7 @@ function computeService(url, returnFrontend) {
return
} else {
for (const frontend in config.services[service].frontends) {
- if (all(service, frontend, options, config, redirects).includes(utils.protocolHost(url))) {
+ if (all(service, frontend, options, config).includes(utils.protocolHost(url))) {
if (returnFrontend) resolve([service, frontend, utils.protocolHost(url)])
else resolve(service)
return
@@ -446,7 +438,7 @@ function switchInstance(url) {
await init()
const protocolHost = utils.protocolHost(url)
for (const service in config.services) {
- if (!all(service, null, options, config, redirects).includes(protocolHost)) continue
+ if (!all(service, null, options, config).includes(protocolHost)) continue
let instancesList = []
if (Object.keys(config.services[service].frontends).length == 1) {
@@ -489,7 +481,7 @@ function reverse(url, urlString) {
if (!urlString) protocolHost = utils.protocolHost(url)
else protocolHost = url.match(/https?:\/{2}(?:[^\s\/]+\.)+[a-zA-Z0-9]+/)[0]
for (const service in config.services) {
- if (!all(service, null, options, config, redirects).includes(protocolHost)) continue
+ if (!all(service, null, options, config).includes(protocolHost)) continue
switch (service) {
case "instagram":
diff --git a/src/config.json b/src/config.json
index 97e84f61..14d80d5e 100644
--- a/src/config.json
+++ b/src/config.json
@@ -23,7 +23,8 @@
"invidious": {
"name": "Invidious",
"embeddable": true,
- "instanceList": true
+ "instanceList": true,
+ "url": "https://invidious.io/"
},
"piped": {
"excludeTargets": [
@@ -32,7 +33,8 @@
],
"name": "Piped",
"embeddable": true,
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/TeamPiped/Piped"
},
"pipedMaterial": {
"excludeTargets": [
@@ -41,12 +43,14 @@
],
"name": "Piped-Material",
"embeddable": false,
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/mmjee/Piped-Material"
},
"cloudtube": {
"name": "CloudTube",
"embeddable": false,
- "instanceList": true
+ "instanceList": true,
+ "url": "https://sr.ht/~cadence/tube/"
},
"freetube": {
"excludeTargets": [
@@ -55,7 +59,8 @@
],
"name": "FreeTube",
"embeddable": false,
- "instanceList": false
+ "instanceList": false,
+ "url": "https://github.com/FreeTubeApp/FreeTube"
},
"yattee": {
"excludeTargets": [
@@ -64,10 +69,12 @@
],
"name": "Yattee",
"embeddable": false,
- "instanceList": false
+ "instanceList": false,
+ "url": "https://github.com/yattee/yattee"
}
},
"targets": [
+ "^https?:\\/{2}redirect\\.invidious\\.io\\/.*",
"^https?:\\/{2}(?:www\\.|m\\.|)youtube.com(\\/|$)(?!iframe_api\\/|redirect\\/)",
"^https?:\\/{2}img\\.youtube.com\\/vi\\/.*\\/..*",
"^https?:\\/{2}(?:i|s)\\.ytimg.com\\/vi\\/.*\\/..*",
@@ -89,11 +96,13 @@
"frontends": {
"beatbump": {
"name": "Beatbump",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/snuffyDev/Beatbump"
},
"hyperpipe": {
"name": "Hyperpipe",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://codeberg.org/Hyperpipe/Hyperpipe"
}
},
"targets": [
@@ -113,7 +122,8 @@
"nitter": {
"name": "Nitter",
"embeddable": true,
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/zedeus/nitter"
}
},
"targets": [
@@ -135,7 +145,8 @@
"frontends": {
"bibliogram": {
"name": "Bibliogram",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://sr.ht/~cadence/bibliogram/"
}
},
"targets": [
@@ -153,7 +164,8 @@
"frontends": {
"proxiTok": {
"name": "ProxiTok",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/pablouser1/ProxiTok"
}
},
"targets": [
@@ -171,11 +183,13 @@
"frontends": {
"libreddit": {
"name": "Libreddit",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/spikecodes/libreddit"
},
"teddit": {
"name": "Teddit",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://codeberg.org/teddit/teddit"
}
},
"targets": [
@@ -195,7 +209,8 @@
"frontends": {
"rimgo": {
"name": "rimgo",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://codeberg.org/video-prize-ranch/rimgo"
}
},
"targets": [
@@ -214,7 +229,8 @@
"frontends": {
"scribe": {
"name": "Scribe",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://sr.ht/~edwardloveall/Scribe/"
}
},
"targets": [
@@ -249,7 +265,8 @@
"frontends": {
"quetre": {
"name": "Quetre",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/zyachel/quetre"
}
},
"targets": [
@@ -267,7 +284,8 @@
"frontends": {
"libremdb": {
"name": "libremdb",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/zyachel/libremdb"
}
},
"targets": [
@@ -285,7 +303,8 @@
"frontends": {
"breezeWiki": {
"name": "BreezeWiki",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://breezewiki.com"
}
},
"targets": [
@@ -304,12 +323,14 @@
"librarian": {
"name": "Librarian",
"embeddable": true,
- "instanceList": true
+ "instanceList": true,
+ "url": "https://codeberg.org/librarian/librarian"
},
"lbryDesktop": {
"name": "LBRY Desktop",
"embeddable": false,
- "instanceList": false
+ "instanceList": false,
+ "url": "https://lbry.com/get"
}
},
"targets": [
@@ -328,21 +349,25 @@
},
"search": {
"frontends": {
- "searx": {
- "name": "SearX",
- "instanceList": true
- },
"searxng": {
"name": "SearXNG",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/searxng/searxng"
+ },
+ "searx": {
+ "name": "SearX",
+ "instanceList": true,
+ "url": "https://searx.github.io/searx/"
},
"whoogle": {
"name": "Whoogle",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://benbusby.com/projects/whoogle-search/"
},
"librex": {
"name": "LibreX",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/hnhx/librex"
}
},
"targets": [
@@ -361,15 +386,18 @@
"frontends": {
"simplyTranslate": {
"name": "SimplyTranslate",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://git.sr.ht/~metalune/simplytranslate_web"
},
"lingva": {
"name": "Lingva Translate",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/TheDavidDelta/lingva-translate"
},
"libreTranslate": {
"name": "LibreTranslate",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/LibreTranslate/LibreTranslate"
}
},
"targets": [
@@ -389,11 +417,13 @@
"frontends": {
"facil": {
"name": "FacilMap",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://github.com/FacilMap/facilmap"
},
"osm": {
"name": "OpenStreetMap",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://www.openstreetmap.org/"
}
},
"targets": [
@@ -413,7 +443,8 @@
"frontends": {
"send": {
"name": "Send",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://gitlab.com/timvisee/send"
}
},
"targets": [
@@ -433,7 +464,8 @@
"frontends": {
"privateBin": {
"name": "PrivateBin",
- "instanceList": true
+ "instanceList": true,
+ "url": "https://privatebin.info/"
}
},
"targets": [
diff --git a/src/pages/options/index.js b/src/pages/options/index.js
index 6fb8e452..3c3f6d1f 100644
--- a/src/pages/options/index.js
+++ b/src/pages/options/index.js
@@ -73,6 +73,13 @@ function loadPage(path) {
})
}
+ const frontend_name_element = document.getElementById(`${service}_page`).getElementsByClassName("frontend_name")[0]
+ if (divs[service].frontend) {
+ frontend_name_element.href = config.services[service].frontends[divs[service].frontend.value].url
+ } else {
+ frontend_name_element.href = Object.values(config.services[service].frontends)[0].url
+ }
+
if (Object.keys(config.services[service].frontends).length > 1) {
changeFrontendsSettings(service)
}
@@ -85,7 +92,6 @@ function loadPage(path) {
}
}
-
async function processDefaultCustomInstances(frontend, networks, document) {
let customInstances = []
let options
diff --git a/src/pages/options/widgets/about.pug b/src/pages/options/widgets/about.pug
index 93830a1d..3ef0e86d 100644
--- a/src/pages/options/widgets/about.pug
+++ b/src/pages/options/widgets/about.pug
@@ -6,19 +6,19 @@ section(class="option-block" id="about_page")
div(class="some-block option-block")
h4 Donate: ♥️
h4
- a(href="https://libredirect.github.io/donate") https://libredirect.github.io/donate
+ a(href="https://libredirect.github.io/donate" target="_blank") https://libredirect.github.io/donate
div(class="some-block option-block")
h4 FAQ:
h4
- a(href="https://libredirect.github.io/faq") https://libredirect.github.io/faq
+ a(href="https://libredirect.github.io/faq" target="_blank") https://libredirect.github.io/faq
div(class="some-block option-block")
h4 Docs:
h4
- a(href="https://libredirect.github.io/docs") https://libredirect.github.io/docs
+ a(href="https://libredirect.github.io/docs" target="_blank") https://libredirect.github.io/docs
div(class="some-block option-block")
h4 Source Code:
h4
- a(href="https://libredirect.github.io/source_code") https://libredirect.github.io/source_code \ No newline at end of file
+ a(href="https://libredirect.github.io/source_code" target="_blank") https://libredirect.github.io/source_code \ No newline at end of file
diff --git a/src/pages/options/widgets/services.pug b/src/pages/options/widgets/services.pug
index dc527c78..22b8ab2d 100644
--- a/src/pages/options/widgets/services.pug
+++ b/src/pages/options/widgets/services.pug
@@ -1,7 +1,8 @@
each val, service in services
section(class="option-block" id=service+"_page")
div(class="some-block option-block")
- h1(data-localise="__MSG_"+service+"__")=services[service].name
+ h1
+ a(href=services[service].url)=services[service].name
hr
@@ -15,10 +16,15 @@ each val, service in services
if Object.keys(services[service].frontends).length> 1
div(class="some-block option-block")
- h4(data-localise="__MSG_frontend__") Frontend
+ h4
+ a(class="frontend_name" target="_blank" data-localise="__MSG_frontend__") Frontend
select(id=service+"-frontend")
each val, frontend in services[service].frontends
option(value=frontend)=services[service].frontends[frontend].name
+ else
+ div(class="some-block option-block")
+ h4
+ a(class="frontend_name" target="_blank" data-localise="__MSG_frontend__") Frontend
if services[service].embeddable
div(class="some-block option-block")
@@ -35,14 +41,14 @@ each val, service in services
div(id=frontend)
div(class="some-block option-block")
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")
each val, network in networks
div(class=network)
diff --git a/src/pages/stylesheets/styles.css b/src/pages/stylesheets/styles.css
index 5f2871e4..24628f5c 100644
--- a/src/pages/stylesheets/styles.css
+++ b/src/pages/stylesheets/styles.css
@@ -126,6 +126,12 @@ section.links div {
}
a {
+ text-decoration: none;
+ color: var(--text);
+ transition: 0.1s;
+}
+
+a:hover {
color: var(--active);
}
diff --git a/src/pages/widgets/switches.pug b/src/pages/widgets/switches.pug
index 7054ea72..9fbf5201 100644
--- a/src/pages/widgets/switches.pug
+++ b/src/pages/widgets/switches.pug
@@ -1,6 +1,6 @@
each val, service in services
div(class=service + " some-block")
- a(class="title" href=services[service].url)
+ a(class="title" href=`/pages/options/index.html#${services[service].name.toLowerCase()}`)
if services[service].imageType == 'svgMono'
img(src=`../../assets/images/${service}-icon.svg`)
else