about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBobIsMyManager <bimmgitsignature.nly8m@simplelogin.co>2022-07-27 11:05:49 +0100
committerBobIsMyManager <bimmgitsignature.nly8m@simplelogin.co>2022-07-27 11:05:49 +0100
commit0803eb5e0484920f31e994303fd2bb07d6f5ec83 (patch)
tree8fd19c1f821d6d6b8a436572b63b71fd44e7e186
parentMany things (diff)
downloadlibredirect-0803eb5e0484920f31e994303fd2bb07d6f5ec83.zip
Added lbry desktop
Closes https://github.com/libredirect/libredirect/issues/365
-rw-r--r--.prettierrc.json1
-rw-r--r--src/_locales/en/messages.json3
-rw-r--r--src/assets/javascripts/lbry.js37
-rw-r--r--src/assets/javascripts/wikipedia.js2
-rw-r--r--src/pages/options/index.html9
-rw-r--r--src/pages/options/widgets/lbry.js32
-rw-r--r--src/pages/options/widgets/lbry.pug8
7 files changed, 65 insertions, 27 deletions
diff --git a/.prettierrc.json b/.prettierrc.json
index d0df3f36..864a0cc8 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -8,7 +8,6 @@
 		{
 			"files": ["*.js", "*.json"],
 			"options": {
-				"tabWidth": 2,
 				"singleQuote": false
 			}
 		},
diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json
index dfbede1a..23d42e48 100644
--- a/src/_locales/en/messages.json
+++ b/src/_locales/en/messages.json
@@ -207,5 +207,8 @@
     },
     "protocolFallback": {
         "message": "Fallback to normal if no instances are available for the current protocol"
+    },
+    "lbryDesktop": {
+        "message": "LBRY Desktop"
     }
 }
diff --git a/src/assets/javascripts/lbry.js b/src/assets/javascripts/lbry.js
index 7f39b734..f0698d36 100644
--- a/src/assets/javascripts/lbry.js
+++ b/src/assets/javascripts/lbry.js
@@ -32,6 +32,7 @@ function setRedirects(val) {
 }
 
 let disableLbryTargets,
+	lbryFrontend,
 	protocol,
 	protocolFallback,
 	lbryTargetsRedirects,
@@ -48,6 +49,7 @@ function init() {
 		browser.storage.local.get(
 			[
 				"disableLbryTargets",
+				"lbryFrontend",
 				"protocol",
 				"protocolFallback",
 				"lbryTargetsRedirects",
@@ -61,6 +63,7 @@ function init() {
 			],
 			r => {
 				disableLbryTargets = r.disableLbryTargets
+				lbryFrontend = r.lbryFrontend
 				protocol = r.protocol
 				protocolFallback = r.protocolFallback
 				lbryTargetsRedirects = r.lbryTargetsRedirects
@@ -120,17 +123,34 @@ function redirect(url, type, initiator, disableOverride) {
 	if (disableLbryTargets && !disableOverride) return
 	if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return
 	if (!targets.includes(url.host)) return
-	if (type != "main_frame") return
+	if (type != ("main_frame" || "sub_frame")) return
+	//https://odysee.com/$/embed/the-anti-smartphone-revolution/22b482e450c4ca13c464eee8f51b3a52bbb942ae?r=7pAWcQybShS63wz486r8wVv9FpsDJ47A
+	// to
+	//https://{instance}/embed/@Coldfusion:f/the-anti-smartphone-revolution:2
 
 	let instancesList = []
-	if (protocol == "loki") instancesList = [...librarianLokiCustomRedirects]
-	else if (protocol == "i2p") instancesList = [...librarianI2pCustomRedirects]
-	else if (protocol == "tor") instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]
-	if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
-		instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]
+	switch (lbryFrontend) {
+		case "librarian":
+			switch (protocol) {
+				case "loki":
+					instancesList = [...librarianLokiCustomRedirects]
+					break
+				case "i2p":
+					instancesList = [...librarianI2pRedirectsChecks, ...librarianI2pCustomRedirects]
+					break
+				case "tor":
+					instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]
+			}
+			if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+				instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]
+			}
+			break
+		case "lbryDesktop":
+			if (type == "main_frame") {
+				return url.href.replace(/^https?:\/{2}odysee\.com\//, "lbry://").replace(/:(?=[a-zA-Z0-9])/g, "#")
+			}
+			if (instancesList.length === 0) return
 	}
-	if (instancesList.length === 0) return
-
 	const randomInstance = utils.getRandomInstance(instancesList)
 	return `${randomInstance}${url.pathname}${url.search}`
 }
@@ -147,6 +167,7 @@ function initDefaults() {
 				browser.storage.local.set(
 					{
 						disableLbryTargets: true,
+						lbryFrontend: "librarian",
 						lbryTargetsRedirects: redirects,
 
 						librarianNormalRedirectsChecks: [...redirects.librarian.normal],
diff --git a/src/assets/javascripts/wikipedia.js b/src/assets/javascripts/wikipedia.js
index d5c9bfa6..cf19b208 100644
--- a/src/assets/javascripts/wikipedia.js
+++ b/src/assets/javascripts/wikipedia.js
@@ -2,7 +2,7 @@ window.browser = window.browser || window.chrome
 
 import utils from "./utils.js"
 
-const targets = /^https?:\/{2}(([a-z]{1,}\.){0,})wikipedia\.org/
+const targets = /^https?:\/{2}([a-z]+\.)*wikipedia\.org/
 
 const frontends = new Array("wikiless")
 const protocols = new Array("normal", "tor", "i2p", "loki")
diff --git a/src/pages/options/index.html b/src/pages/options/index.html
index a1e14d22..84955339 100644
--- a/src/pages/options/index.html
+++ b/src/pages/options/index.html
@@ -2195,13 +2195,20 @@
       </section>
       <section class="option-block" id="lbry_page">
         <div class="some-block option-block">
-          <h1 data-localise="__MSG_lbry__">LBRY/Odysee</h1>
+          <h1 data-localise="__MSG_lbry__">LBRY</h1>
         </div>
         <hr>
         <div class="some-block option-block">
           <h4 data-localise="__MSG_enable__">Enable</h4>
           <input id="lbry-enable" type="checkbox">
         </div>
+        <div class="some-block option-block">
+          <h4 data-localise="__MSG_frontend__">Frontend</h4>
+          <select id="lbry-frontend">
+            <option value="librarian">Librarian</option>
+            <option value="lbryDesktop" data-localise="__MSG_lbryDesktop__">LBRY Desktop</option>
+          </select>
+        </div>
         <div id="librarian">
           <hr>
           <div class="normal">
diff --git a/src/pages/options/widgets/lbry.js b/src/pages/options/widgets/lbry.js
index 79be6e18..76e212cb 100644
--- a/src/pages/options/widgets/lbry.js
+++ b/src/pages/options/widgets/lbry.js
@@ -1,27 +1,23 @@
 import utils from "../../../assets/javascripts/utils.js"
 
-// UNCOMMENT ALL COMMENTS ONCE OTHER FRONTENDS EXIST
-
 const frontends = new Array("librarian")
 const protocols = new Array("normal", "tor", "i2p", "loki")
 
 const enable = document.getElementById("lbry-enable")
 const lbry = document.getElementById("lbry_page")
-//const frontend = document.getElementById("lbry-frontend");
+const frontend = document.getElementById("lbry-frontend")
 let protocol
 
-/*
 function changeFrontendsSettings() {
-    for (let i = 0; i < frontends.length; i++) {
-        const frontendDiv = document.getElementById(frontends[i])
-        if (frontends[i] == frontend.value) {
-            frontendDiv.style.display = 'block'
-        } else {
-            frontendDiv.style.display = 'none'
-        }
-    }
+	for (let i = 0; i < frontends.length; i++) {
+		const frontendDiv = document.getElementById(frontends[i])
+		if (frontends[i] == frontend.value) {
+			frontendDiv.style.display = "block"
+		} else {
+			frontendDiv.style.display = "none"
+		}
+	}
 }
-*/
 
 function changeProtocolSettings() {
 	for (let i = 0; i < frontends.length; i++) {
@@ -37,14 +33,20 @@ function changeProtocolSettings() {
 	}
 }
 
-browser.storage.local.get(["disableLbryTargets", "protocol"], r => {
+browser.storage.local.get(["disableLbryTargets", "protocol", "lbryFrontend"], r => {
 	enable.checked = !r.disableLbryTargets
 	protocol = r.protocol
+	frontend.value = r.lbryFrontend
+	changeFrontendsSettings()
 	changeProtocolSettings()
 })
 
 lbry.addEventListener("change", () => {
-	browser.storage.local.set({ disableLbryTargets: !enable.checked })
+	browser.storage.local.set({
+		disableLbryTargets: !enable.checked,
+		lbryFrontend: frontend.value,
+	})
+	changeFrontendsSettings()
 })
 
 for (let i = 0; i < frontends.length; i++) {
diff --git a/src/pages/options/widgets/lbry.pug b/src/pages/options/widgets/lbry.pug
index 2bdccb5a..678b87d9 100644
--- a/src/pages/options/widgets/lbry.pug
+++ b/src/pages/options/widgets/lbry.pug
@@ -1,11 +1,17 @@
 section#lbry_page.option-block
     .some-block.option-block
-        h1(data-localise="__MSG_lbry__") LBRY/Odysee
+        h1(data-localise="__MSG_lbry__") LBRY
     hr
     .some-block.option-block
         h4(data-localise="__MSG_enable__") Enable
         input#lbry-enable(type="checkbox")
 
+    .some-block.option-block
+        h4(data-localise="__MSG_frontend__") Frontend
+        select#lbry-frontend
+            option(value="librarian") Librarian
+            option(value="lbryDesktop" data-localise="__MSG_lbryDesktop__") LBRY Desktop
+
     #librarian
         hr
         .normal