about summary refs log tree commit diff stats
path: root/src/pages
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-03-09 22:52:58 +0300
committerManeraKai <manerakai@protonmail.com>2022-03-09 22:52:58 +0300
commit04fcac392067c28a875648bcc3ac234d6ed05b05 (patch)
treedb2edd98b118cf081fafb0baffa176cedd02be2e /src/pages
parentFixed alwaysUsePreferred bug #96. Added way to customize Popup. Added oldRedd... (diff)
downloadlibredirect-04fcac392067c28a875648bcc3ac234d6ed05b05.zip
Added autoRedirect off offline instances option
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/background/background.js46
-rw-r--r--src/pages/errors/instance_offline.html29
-rw-r--r--src/pages/errors/instance_offline.js2
-rw-r--r--src/pages/options/general/general.html5
-rw-r--r--src/pages/options/general/general.js7
-rw-r--r--src/pages/popup/popup.js4
6 files changed, 89 insertions, 4 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index cf893143..f93944e4 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -110,6 +110,52 @@ browser.tabs.onRemoved.addListener((tabId) => {
   }
 });
 
+
+
+
+
+browser.webRequest.onResponseStarted.addListener(
+  details => {
+    console.log("onResponseStarted");
+    let autoRedirect = generalHelper.getAutoRedirect();
+
+    if (!autoRedirect) return null;
+
+    if (details.statusCode >= 500) {
+
+      const url = new URL(details.url);
+      let newUrl;
+
+      newUrl = youtubeHelper.changeInstance(url);
+
+      if (!newUrl) newUrl = twitterHelper.changeInstance(url);
+
+      if (!newUrl) newUrl = instagramHelper.changeInstance(url);
+
+      if (!newUrl) newUrl = redditHelper.changeInstance(url);
+
+      if (!newUrl) newUrl = searchHelper.changeInstance(url);
+
+      if (!newUrl) newUrl = translateHelper.changeInstance(url);
+
+      if (!newUrl) newUrl = mediumHelper.changeInstance(url);
+
+      if (!newUrl) newUrl = imgurHelper.changeInstance(url);
+
+      if (!newUrl) newUrl = wikipediaHelper.changeInstance(url)
+
+      if (newUrl) {
+        browser.tabs.update({ url: '../errors/instance_offline.html' });
+
+        setTimeout(() => browser.tabs.update({ url: newUrl }), 2000);
+      }
+
+
+    }
+  },
+  { urls: ["<all_urls>"], }
+)
+
 browser.tabs.onUpdated.addListener(
   (tabId, changeInfo, _) => {
     let url;
diff --git a/src/pages/errors/instance_offline.html b/src/pages/errors/instance_offline.html
new file mode 100644
index 00000000..7536b3c2
--- /dev/null
+++ b/src/pages/errors/instance_offline.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <title>Instance is offline</title>
+    <link href="../stylesheets/styles.css" rel="stylesheet" />
+    <style>
+        body {
+            height: 100vh;
+            width: 100vw;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            font-size: 30px;
+        }
+    </style>
+
+</head>
+
+<body>
+    This instance is offline, you'll be redirected after&nbsp;<span id="number">2</span>&nbsp;seconds
+
+    <script src="instance_offline.js"></script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/src/pages/errors/instance_offline.js b/src/pages/errors/instance_offline.js
new file mode 100644
index 00000000..586585d6
--- /dev/null
+++ b/src/pages/errors/instance_offline.js
@@ -0,0 +1,2 @@
+setTimeout(() => document.getElementById("number").innerHTML = '1', 1000);
+setTimeout(() => document.getElementById("number").innerHTML = '0', 2000);
\ No newline at end of file
diff --git a/src/pages/options/general/general.html b/src/pages/options/general/general.html
index fcee2089..acacc59f 100644
--- a/src/pages/options/general/general.html
+++ b/src/pages/options/general/general.html
@@ -110,6 +110,11 @@
     </div>
 
     <div class="some-block option-block">
+      <h4>Auto Redirect of offline instances</h4>
+      <input id="auto-redirect" type="checkbox" checked />
+    </div>
+
+    <div class="some-block option-block">
       <h4>Exceptions</h4>
     </div>
 
diff --git a/src/pages/options/general/general.js b/src/pages/options/general/general.js
index f65fa290..54a1fd19 100644
--- a/src/pages/options/general/general.js
+++ b/src/pages/options/general/general.js
@@ -62,6 +62,11 @@ alwaysUsePreferredElement.addEventListener("change",
   event => generalHelper.setAlwaysUsePreferred(event.target.checked)
 );
 
+let autoRedirectElement = document.getElementById("auto-redirect")
+autoRedirectElement.addEventListener("change",
+  event => generalHelper.setAutoRedirect(event.target.checked)
+);
+
 let applyThemeToSitesElement = document.getElementById("apply-theme-to-sites")
 applyThemeToSitesElement.addEventListener("change",
   event => generalHelper.setApplyThemeToSites(event.target.checked)
@@ -92,7 +97,7 @@ for (const frontend of generalHelper.allPopupFrontends)
 
 generalHelper.init().then(() => {
   alwaysUsePreferredElement.checked = generalHelper.getAlwaysUsePreferred();
-  console.log("alwaysUsePreferredElement.checked", alwaysUsePreferredElement.checked);
+  autoRedirectElement.checked = generalHelper.getAutoRedirect();
   themeElement.value = generalHelper.getTheme();
   applyThemeToSitesElement.checked = generalHelper.getApplyThemeToSites();
   instanceTypeElement.addEventListener("change",
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index 5d7a690d..e8ff1f3a 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -164,11 +164,9 @@ let popupFrontends;
 generalHelper.init().then(() => {
   popupFrontends = generalHelper.getPopupFrontends();
 
-  for (const frontend of generalHelper.allPopupFrontends) {
-    console.log(frontend)
+  for (const frontend of generalHelper.allPopupFrontends)
     if (!popupFrontends.includes(frontend))
       document.getElementById(frontend).classList.add("hide")
     else
       document.getElementById(frontend).classList.remove("hide")
-  }
 });
\ No newline at end of file