about summary refs log tree commit diff stats
path: root/src/pages/background/background.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/background/background.js')
-rw-r--r--src/pages/background/background.js54
1 files changed, 33 insertions, 21 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index f8a7e54c..9b32bbdf 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -131,47 +131,59 @@ browser.tabs.onRemoved.addListener(
   }
 );
 
-browser.webRequest.onResponseStarted.addListener(
-  details => {
-    if (!generalHelper.getAutoRedirect()) return null;
+function redirectOfflineInstance(url, tabId) {
+  let newUrl;
 
-    if (details.type == 'main_frame' && (details.statusCode == 503 || details.statusCode == 504)) {
-      // if (details.type == 'main_frame' && details.statusCode >= 200) {
-      console.log("statusCode", details.statusCode);
+  newUrl = youtubeHelper.switchInstance(url);
+  if (!newUrl) newUrl = twitterHelper.switchInstance(url);
 
-      const url = new URL(details.url);
-      let newUrl;
+  if (!newUrl) newUrl = instagramHelper.switchInstance(url);
 
-      newUrl = youtubeHelper.switchInstance(url);
-      if (!newUrl) newUrl = twitterHelper.switchInstance(url);
+  if (!newUrl) newUrl = redditHelper.switchInstance(url);
 
-      if (!newUrl) newUrl = instagramHelper.switchInstance(url);
+  if (!newUrl) newUrl = searchHelper.switchInstance(url);
 
-      if (!newUrl) newUrl = redditHelper.switchInstance(url);
+  if (!newUrl) newUrl = translateHelper.switchInstance(url);
 
-      if (!newUrl) newUrl = searchHelper.switchInstance(url);
+  if (!newUrl) newUrl = mediumHelper.switchInstance(url);
 
-      if (!newUrl) newUrl = translateHelper.switchInstance(url);
+  if (!newUrl) newUrl = imgurHelper.switchInstance(url);
 
-      if (!newUrl) newUrl = mediumHelper.switchInstance(url);
+  if (!newUrl) newUrl = wikipediaHelper.switchInstance(url);
 
-      if (!newUrl) newUrl = imgurHelper.switchInstance(url);
+  if (!newUrl) newUrl = peertubeHelper.switchInstance(url);
 
-      if (!newUrl) newUrl = wikipediaHelper.switchInstance(url);
+  if (!newUrl) newUrl = lbryHelper.switchInstance(url);
 
-      if (!newUrl) newUrl = peertubeHelper.switchInstance(url);
+  if (!newUrl) newUrl = spotifyHelper.switchInstance(url);
 
-      if (!newUrl) newUrl = lbryHelper.switchInstance(url);
+  if (newUrl) browser.tabs.update(tabId, { url: `/pages/errors/instance_offline.html?url=${encodeURIComponent(newUrl)}` });
+}
 
-      if (!newUrl) newUrl = spotifyHelper.switchInstance(url);
+browser.webRequest.onResponseStarted.addListener(
+  details => {
+    if (!generalHelper.getAutoRedirect()) return null;
 
-      if (newUrl) browser.tabs.update(details.tabId, { url: `/pages/errors/instance_offline.html?url=${encodeURIComponent(newUrl)}` });
+    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);
+      redirectOfflineInstance(url, details.tabId);
     }
   },
   { urls: ["<all_urls>"], }
 )
 
+browser.webRequest.onErrorOccurred.addListener(
+  details => {
+    if (!generalHelper.getAutoRedirect()) return;
+    const url = new URL(details.url);
+    redirectOfflineInstance(url, details.tabId);
+  },
+  { urls: ["<all_urls>"], }
+)
+
 browser.tabs.onUpdated.addListener(
   (tabId, changeInfo, _) => {
     let url;