about summary refs log tree commit diff stats
path: root/src/pages/background
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/background')
-rw-r--r--src/pages/background/background.js34
1 files changed, 25 insertions, 9 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 0d558b01..1fcba190 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -67,16 +67,22 @@ browser.webRequest.onBeforeRequest.addListener(
       tabIdRedirects[details.tabId]
     )
 
-    if (newUrl && newUrl.startsWith("https://no-instance.libredirect.invalid")) {
-      const url = new URL(newUrl)
-      const frontend = url.searchParams.get("frontend")
-      const oldUrl = new URL(url.searchParams.get("url"))
+    if (
+      (newUrl && newUrl.startsWith("https://no-instance.libredirect.invalid")) ||
+      (!newUrl && url.href.startsWith("https://no-instance.libredirect.invalid"))
+    ) {
+      newUrl = newUrl ? new URL(newUrl) : url
+      const frontend = newUrl.searchParams.get("frontend")
+      const oldUrl = new URL(newUrl.searchParams.get("url"))
       const params = new URLSearchParams({
         message: "no_instance",
         url: oldUrl,
         frontend: frontend,
       })
-      newUrl = browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`)
+      browser.tabs.update({
+        url: browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`),
+      })
+      return { cancel: true }
     }
 
     if (!newUrl) {
@@ -85,7 +91,10 @@ browser.webRequest.onBeforeRequest.addListener(
           message: "disabled",
           url: url.href,
         })
-        newUrl = browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`)
+        browser.tabs.update({
+          url: browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`),
+        })
+        return { cancel: true }
       }
     }
 
@@ -121,9 +130,11 @@ browser.webRequest.onHeadersReceived.addListener(
         frontend: frontend,
         service: service,
       })
-      browser.tabs.update({
-        url: browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`),
-      })
+      setTimeout(() => {
+        browser.tabs.update({
+          url: browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`),
+        })
+      }, 2000)
     }
   },
   { urls: ["<all_urls>"] }
@@ -365,3 +376,8 @@ browser.runtime.getPlatformInfo(r => {
     })
   }
 })
+
+browser.runtime.onMessage.addListener(r => {
+  if (r.message == "reverse") tabIdRedirects[r.tabId] = false
+  else if (r.message == "redirect") tabIdRedirects[r.tabId] = true
+})