aboutsummaryrefslogtreecommitdiffstats
path: root/src/pages
diff options
context:
space:
mode:
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