about summary refs log tree commit diff stats
path: root/src/assets/javascripts/lbry.js
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/assets/javascripts/lbry.js
parentFallback on codeberg for instance fetching (diff)
downloadlibredirect-29295b82373f5ccdeee79afe70b7f21288c5c129.zip
Added lbry embeds and codeberg issue templates
Diffstat (limited to 'src/assets/javascripts/lbry.js')
-rw-r--r--src/assets/javascripts/lbry.js70
1 files changed, 41 insertions, 29 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: [],