aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/assets/javascripts/helpers/general.js18
-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
7 files changed, 105 insertions, 6 deletions
diff --git a/src/assets/javascripts/helpers/general.js b/src/assets/javascripts/helpers/general.js
index 66edf93e..1d99dfdd 100644
--- a/src/assets/javascripts/helpers/general.js
+++ b/src/assets/javascripts/helpers/general.js
@@ -29,7 +29,6 @@ let exceptions = {
"url": [],
"regex": [],
};
-
const getExceptions = () => exceptions;
function setExceptions(val) {
exceptions = val;
@@ -37,6 +36,14 @@ function setExceptions(val) {
console.log("exceptions: ", val)
}
+let autoRedirect;
+const getAutoRedirect = () => autoRedirect;
+function setAutoRedirect(val) {
+ autoRedirect = val;
+ browser.storage.local.set({ autoRedirect })
+ console.log("autoRedirect: ", val)
+}
+
function isException(url) {
for (const item of exceptions.url) {
console.log(item, `${url.protocol}//${url.host}`)
@@ -55,7 +62,8 @@ async function init() {
"alwaysUsePreferred",
"theme",
"applyThemeToSites",
- "popupFrontends"
+ "popupFrontends",
+ "autoRedirect"
],
r => { // r = result
if (r.exceptions) exceptions = r.exceptions;
@@ -78,6 +86,9 @@ async function init() {
"wikipedia",
"medium",
];
+
+ autoRedirect = r.autoRedirect ?? false;
+
resolve();
}
)
@@ -114,6 +125,9 @@ export default {
getExceptions,
setExceptions,
+ getAutoRedirect,
+ setAutoRedirect,
+
getAlwaysUsePreferred,
setAlwaysUsePreferred,
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