about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pages/background/background.js11
-rw-r--r--src/pages/errors/instance_offline.html16
-rw-r--r--src/pages/errors/instance_offline.js22
3 files changed, 39 insertions, 10 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index d1488870..4a48a15f 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -130,8 +130,9 @@ browser.webRequest.onResponseStarted.addListener(
   details => {
     if (!generalHelper.getAutoRedirect()) return null;
 
-    console.log("statusCode", details.statusCode);
-    if (details.type == 'main_frame' && details.statusCode >= 500) {
+    if (details.type == 'main_frame' && (details.statusCode == 503 || details.statusCode == 504)) {
+      // if (details.type == 'main_frame' && details.statusCode >= 200) {
+      console.log("statusCode", details.statusCode);
 
       const url = new URL(details.url);
       let newUrl;
@@ -159,10 +160,8 @@ browser.webRequest.onResponseStarted.addListener(
 
       // if (!newUrl) newUrl = spotifyHelper.changeInstance(url);
 
-      if (newUrl) {
-        browser.tabs.update({ url: '/pages/errors/instance_offline.html' });
-        setTimeout(() => browser.tabs.update({ url: newUrl }), 2000);
-      }
+      if (newUrl) browser.tabs.update(details.tabId, { url: `/pages/errors/instance_offline.html?url=${encodeURIComponent(newUrl)}` });
+
     }
   },
   { urls: ["<all_urls>"], }
diff --git a/src/pages/errors/instance_offline.html b/src/pages/errors/instance_offline.html
index 7536b3c2..09ffb431 100644
--- a/src/pages/errors/instance_offline.html
+++ b/src/pages/errors/instance_offline.html
@@ -9,19 +9,31 @@
     <link href="../stylesheets/styles.css" rel="stylesheet" />
     <style>
         body {
+            margin: 0;
+            padding: 0;
             height: 100vh;
             width: 100vw;
-            display: flex;
+            flex-wrap: wrap;
             justify-content: center;
             align-items: center;
             font-size: 30px;
+            display: flex;
+        }
+
+        div {
+            text-align: center;
         }
     </style>
 
 </head>
 
 <body>
-    This instance is offline, you'll be redirected after&nbsp;<span id="number">2</span>&nbsp;seconds
+    <div>
+        <p id="message">This instance is offline, you'll be redirected after&nbsp;<span
+                id="number">2</span>&nbsp;seconds
+        </p>
+        <button id="cancel">Cancel</button>
+    </div>
 
     <script src="instance_offline.js"></script>
 </body>
diff --git a/src/pages/errors/instance_offline.js b/src/pages/errors/instance_offline.js
index 586585d6..c3aee2c1 100644
--- a/src/pages/errors/instance_offline.js
+++ b/src/pages/errors/instance_offline.js
@@ -1,2 +1,20 @@
-setTimeout(() => document.getElementById("number").innerHTML = '1', 1000);
-setTimeout(() => document.getElementById("number").innerHTML = '0', 2000);
\ No newline at end of file
+const params = new Proxy(
+    new URLSearchParams(window.location.search),
+    { get: (searchParams, prop) => searchParams.get(prop) }
+);
+
+let number = document.getElementById("number");
+setTimeout(() => number.innerHTML = '1', 1000);
+setTimeout(
+    () => {
+        number.innerHTML = '0'
+        if (!isCanceled) window.location = params.url;
+    },
+    2000
+);
+
+let isCanceled = false;
+document.getElementById("cancel").addEventListener("click", () => {
+    isCanceled = true;
+    document.getElementById("message").innerHTML = "Redirection Canceled";
+})
\ No newline at end of file