about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/services.js24
-rw-r--r--src/manifest.json8
-rw-r--r--src/pages/background/background.js13
3 files changed, 26 insertions, 19 deletions
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index a0201023..4621e48b 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -497,26 +497,14 @@ function redirect(url, type, initiator, forceRedirection) {
 			return `${randomInstance}${url.pathname}${url.search}`
 		}
 		case "wikiless": {
-			let GETArguments = []
-			if (url.search.length > 0) {
-				let search = url.search.substring(1) //get rid of '?'
-				let argstrings = search.split("&")
-				for (let i = 0; i < argstrings.length; i++) {
-					let args = argstrings[i].split("=")
-					GETArguments.push([args[0], args[1]])
-				}
-			}
-
-			let link = `${randomInstance}${url.pathname}`
-			let urlSplit = url.host.split(".")
-			if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
-				if (urlSplit[0] == "m") GETArguments.push(["mobileaction", "toggle_view_mobile"])
-				else GETArguments.push(["lang", urlSplit[0]])
-				if (urlSplit[1] == "m") GETArguments.push(["mobileaction", "toggle_view_mobile"])
+			let hostSplit = url.host.split(".")
+			if (hostSplit[0] != "wikipedia" && hostSplit[0] != "www") {
 				// wikiless doesn't have mobile view support yet
+				if (hostSplit[0] == "m") url.searchParams.append("mobileaction", "toggle_view_mobile")
+				else url.searchParams.append("lang", hostSplit[0])
+				if (hostSplit[1] == "m") url.searchParams.append("mobileaction", "toggle_view_mobile")
 			}
-			for (let i = 0; i < GETArguments.length; i++) link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1]
-			return link + url.hash
+			return `${randomInstance}${url.pathname}${GETArguments.toString()}${url.hash}`
 		}
 		case "proxiTok": {
 			if (url.pathname.startsWith('/email')) return
diff --git a/src/manifest.json b/src/manifest.json
index 5bb7c0c3..e2f79bd3 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -71,9 +71,15 @@
 		},
 		"reverse": {
 			"suggested_key": {
-				"default": "Alt+Shift+R"
+				"default": "Alt+Shift+O"
 			},
 			"description": "Redirect to the original link. Ex: Redirects to the original twitter link while in the nitter website"
+		},
+		"redirect": {
+			"suggested_key": {
+				"default": "Alt+Shift+R"
+			},
+			"description": "Redirect link. Ex: Redirects original twitter link to nitter"
 		}
 	},
 	"default_locale": "en",
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 467259cd..d7f96a34 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -97,6 +97,19 @@ browser.commands.onCommand.addListener(async command => {
 		else if (command == "copyRaw") {
 			servicesHelper.copyRaw(url)
 		}
+		else if (command == "redirect") {
+			browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
+				if (tabs[0].url) {
+					const url = new URL(tabs[0].url)
+					const newUrl = servicesHelper.redirect(url, "main_frame", null, true)
+					if (newUrl) {
+						browser.tabs.update(tabs[0].id, { url: newUrl }, () => {
+							tabIdRedirects[tabs[0].id] = true
+						})
+					}
+				}
+			})
+		}
 		else if (command == "reverse") {
 			browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
 				if (tabs[0].url) {