about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorBobIsMyManager <bimmgitsignature.nly8m@simplelogin.co>2022-07-28 17:30:38 +0100
committerBobIsMyManager <bimmgitsignature.nly8m@simplelogin.co>2022-07-28 17:30:38 +0100
commit29295b82373f5ccdeee79afe70b7f21288c5c129 (patch)
tree02ffe5f52c449e73ca30d5e00705701d9f7f46b7 /src
parentFallback on codeberg for instance fetching (diff)
downloadlibredirect-29295b82373f5ccdeee79afe70b7f21288c5c129.zip
Added lbry embeds and codeberg issue templates
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/lbry.js70
-rw-r--r--src/pages/options/index.html8
-rw-r--r--src/pages/options/widgets/lbry.js5
-rw-r--r--src/pages/options/widgets/lbry.pug7
4 files changed, 60 insertions, 30 deletions
diff --git a/src/assets/javascripts/lbry.js b/src/assets/javascripts/lbry.js
index f0698d36..0c4d34cc 100644
--- a/src/assets/javascripts/lbry.js
+++ b/src/assets/javascripts/lbry.js
@@ -2,7 +2,7 @@ window.browser = window.browser || window.chrome
 
 import utils from "./utils.js"
 
-let targets = ["odysee.com"]
+const targets = [/^https?:\/{2}odysee\.com/]
 
 const frontends = new Array("librarian")
 const protocols = new Array("normal", "tor", "i2p", "loki")
@@ -36,6 +36,7 @@ let disableLbryTargets,
 	protocol,
 	protocolFallback,
 	lbryTargetsRedirects,
+	lbryRedirectType,
 	librarianNormalRedirectsChecks,
 	librarianNormalCustomRedirects,
 	librarianTorRedirectsChecks,
@@ -53,6 +54,7 @@ function init() {
 				"protocol",
 				"protocolFallback",
 				"lbryTargetsRedirects",
+				"lbryRedirectType",
 				"librarianNormalRedirectsChecks",
 				"librarianNormalCustomRedirects",
 				"librarianTorRedirectsChecks",
@@ -67,6 +69,7 @@ function init() {
 				protocol = r.protocol
 				protocolFallback = r.protocolFallback
 				lbryTargetsRedirects = r.lbryTargetsRedirects
+				lbryRedirectType = r.lbryRedirectType
 				librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks
 				librarianNormalCustomRedirects = r.librarianNormalCustomRedirects
 				librarianTorRedirectsChecks = r.librarianTorRedirectsChecks
@@ -86,6 +89,24 @@ function all() {
 	return [...redirects.librarian.normal, ...redirects.librarian.tor, ...librarianNormalCustomRedirects, ...librarianTorCustomRedirects, ...librarianI2pCustomRedirects, ...librarianLokiCustomRedirects]
 }
 
+function getInstancesList() {
+	let tmpList = []
+	switch (protocol) {
+		case "loki":
+			tmpList = [...librarianLokiCustomRedirects]
+			break
+		case "i2p":
+			tmpList = [...librarianI2pRedirectsChecks, ...librarianI2pCustomRedirects]
+			break
+		case "tor":
+			tmpList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]
+	}
+	if ((tmpList.length === 0 && protocolFallback) || protocol == "normal") {
+		tmpList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]
+	}
+	return tmpList
+}
+
 function switchInstance(url, disableOverride) {
 	return new Promise(async resolve => {
 		await init()
@@ -122,37 +143,27 @@ function switchInstance(url, disableOverride) {
 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" || "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 = []
-	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 (!targets.some(rx => rx.test(url.href))) return
+	if ((type == "main_frame" && lbryRedirectType == "sub_frame") || (type == "sub_frame" && lbryRedirectType == "main_frame")) return
+
+	const instancesList = getInstancesList()
+	switch (type) {
+		case "main_frame":
+			switch (lbryFrontend) {
+				case "librarian":
+					if (instancesList.length === 0) return
+					const randomInstance = utils.getRandomInstance(instancesList)
+					return `${randomInstance}${url.pathname}${url.search}`
+				case "lbryDesktop":
+					if (type == "main_frame") {
+						return url.href.replace(/^https?:\/{2}odysee\.com\//, "lbry://").replace(/:(?=[a-zA-Z0-9])/g, "#")
+					}
 			}
+		case "sub_frame":
 			if (instancesList.length === 0) return
+			const randomInstance = utils.getRandomInstance(instancesList)
+			return `${randomInstance}${url.pathname}${url.search}`.replace(/\/(?=[a-f0-9]{40})/, ":")
 	}
-	const randomInstance = utils.getRandomInstance(instancesList)
-	return `${randomInstance}${url.pathname}${url.search}`
 }
 
 function initDefaults() {
@@ -169,6 +180,7 @@ function initDefaults() {
 						disableLbryTargets: true,
 						lbryFrontend: "librarian",
 						lbryTargetsRedirects: redirects,
+						lbryRedirectType: "both",
 
 						librarianNormalRedirectsChecks: [...redirects.librarian.normal],
 						librarianNormalCustomRedirects: [],
diff --git a/src/pages/options/index.html b/src/pages/options/index.html
index 84955339..a868ad3a 100644
--- a/src/pages/options/index.html
+++ b/src/pages/options/index.html
@@ -2209,6 +2209,14 @@
             <option value="lbryDesktop" data-localise="__MSG_lbryDesktop__">LBRY Desktop</option>
           </select>
         </div>
+        <div class="some-block option-block">
+          <h4 data-localise="__MSG_redirectType__">Redirect Type</h4>
+          <select id="lbry-redirect_type">
+            <option value="both" data-localise="__MSG_both__">both</option>
+            <option value="sub_frame" data-localise="__MSG_onlyEmbedded__">Only Embedded</option>
+            <option value="main_frame" data-localise="__MSG_onlyNotEmbedded__">Only Not Embedded</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 76e212cb..d50de843 100644
--- a/src/pages/options/widgets/lbry.js
+++ b/src/pages/options/widgets/lbry.js
@@ -5,6 +5,7 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
 
 const enable = document.getElementById("lbry-enable")
 const lbry = document.getElementById("lbry_page")
+const redirectType = document.getElementById("lbry-redirect_type")
 const frontend = document.getElementById("lbry-frontend")
 let protocol
 
@@ -33,9 +34,10 @@ function changeProtocolSettings() {
 	}
 }
 
-browser.storage.local.get(["disableLbryTargets", "protocol", "lbryFrontend"], r => {
+browser.storage.local.get(["disableLbryTargets", "protocol", "lbryFrontend", "lbryRedirectType"], r => {
 	enable.checked = !r.disableLbryTargets
 	protocol = r.protocol
+	redirectType.value = r.lbryRedirectType
 	frontend.value = r.lbryFrontend
 	changeFrontendsSettings()
 	changeProtocolSettings()
@@ -44,6 +46,7 @@ browser.storage.local.get(["disableLbryTargets", "protocol", "lbryFrontend"], r
 lbry.addEventListener("change", () => {
 	browser.storage.local.set({
 		disableLbryTargets: !enable.checked,
+		lbryRedirectType: redirectType.value,
 		lbryFrontend: frontend.value,
 	})
 	changeFrontendsSettings()
diff --git a/src/pages/options/widgets/lbry.pug b/src/pages/options/widgets/lbry.pug
index 678b87d9..e4278438 100644
--- a/src/pages/options/widgets/lbry.pug
+++ b/src/pages/options/widgets/lbry.pug
@@ -12,6 +12,13 @@ section#lbry_page.option-block
             option(value="librarian") Librarian
             option(value="lbryDesktop" data-localise="__MSG_lbryDesktop__") LBRY Desktop
 
+    .some-block.option-block
+        h4(data-localise="__MSG_redirectType__") Redirect Type
+        select#lbry-redirect_type
+            option(value="both" data-localise="__MSG_both__") both
+            option(value="sub_frame" data-localise="__MSG_onlyEmbedded__") Only Embedded
+            option(value="main_frame" data-localise="__MSG_onlyNotEmbedded__") Only Not Embedded
+
     #librarian
         hr
         .normal