about summary refs log tree commit diff stats
path: root/src/assets/javascripts/services.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets/javascripts/services.js')
-rw-r--r--src/assets/javascripts/services.js22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index e67ed842..34bd8650 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -391,11 +391,23 @@ function redirect(url, type, initiator, forceRedirection) {
 			}
 			return randomInstance
 		case "breezeWiki":
-			let wiki = url.hostname.match(/^[a-zA-Z0-9-]+(?=\.fandom\.com)/)
-			if (wiki == "www" || !wiki) wiki = ""
-			else wiki = "/" + wiki
-			if (url.href.search(/Special:Search\?query/) > -1) return `${randomInstance}${wiki}${url.pathname}${url.search}`.replace(/Special:Search\?query/, "search?q").replace(/\/wiki/, "")
-			else return `${randomInstance}${wiki}${url.pathname}${url.search}`
+			let wiki,
+				urlpath = ""
+			if (url.hostname.match(/^[a-zA-Z0-9-]+\.fandom\.com/)) {
+				wiki = url.hostname.match(/^[a-zA-Z0-9-]+(?=\.fandom\.com)/)
+				if (wiki == "www" || !wiki) wiki = ""
+				else wiki = "/" + wiki
+				urlpath = url.pathname
+			} else {
+				wiki = url.pathname.match(/(?<=wiki\/w:c:)[a-zA-Z0-9-]+(?=:)/)
+				if (!wiki) wiki = ""
+				else {
+					wiki = "/" + wiki + "/wiki/"
+					urlpath = url.pathname.match(/(?<=wiki\/w:c:[a-zA-Z0-9-]+:).+/)
+				}
+			}
+			if (url.href.search(/Special:Search\?query/) > -1) return `${randomInstance}${wiki}${urlpath}${url.search}`.replace(/Special:Search\?query/, "search?q").replace(/\/wiki/, "")
+			else return `${randomInstance}${wiki}${urlpath}${url.search}`
 		case "rimgo":
 			if (url.href.search(/^https?:\/{2}(?:[im]\.)?stack\./) > -1) return `${randomInstance}/stack${url.pathname}${url.search}`
 			else return `${randomInstance}${url.pathname}${url.search}`