Added autoRedirect off offline instances option
This commit is contained in:
parent
619f675114
commit
04fcac3920
|
@ -29,7 +29,6 @@ let exceptions = {
|
||||||
"url": [],
|
"url": [],
|
||||||
"regex": [],
|
"regex": [],
|
||||||
};
|
};
|
||||||
|
|
||||||
const getExceptions = () => exceptions;
|
const getExceptions = () => exceptions;
|
||||||
function setExceptions(val) {
|
function setExceptions(val) {
|
||||||
exceptions = val;
|
exceptions = val;
|
||||||
|
@ -37,6 +36,14 @@ function setExceptions(val) {
|
||||||
console.log("exceptions: ", 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) {
|
function isException(url) {
|
||||||
for (const item of exceptions.url) {
|
for (const item of exceptions.url) {
|
||||||
console.log(item, `${url.protocol}//${url.host}`)
|
console.log(item, `${url.protocol}//${url.host}`)
|
||||||
|
@ -55,7 +62,8 @@ async function init() {
|
||||||
"alwaysUsePreferred",
|
"alwaysUsePreferred",
|
||||||
"theme",
|
"theme",
|
||||||
"applyThemeToSites",
|
"applyThemeToSites",
|
||||||
"popupFrontends"
|
"popupFrontends",
|
||||||
|
"autoRedirect"
|
||||||
],
|
],
|
||||||
r => { // r = result
|
r => { // r = result
|
||||||
if (r.exceptions) exceptions = r.exceptions;
|
if (r.exceptions) exceptions = r.exceptions;
|
||||||
|
@ -78,6 +86,9 @@ async function init() {
|
||||||
"wikipedia",
|
"wikipedia",
|
||||||
"medium",
|
"medium",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
autoRedirect = r.autoRedirect ?? false;
|
||||||
|
|
||||||
resolve();
|
resolve();
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -114,6 +125,9 @@ export default {
|
||||||
getExceptions,
|
getExceptions,
|
||||||
setExceptions,
|
setExceptions,
|
||||||
|
|
||||||
|
getAutoRedirect,
|
||||||
|
setAutoRedirect,
|
||||||
|
|
||||||
getAlwaysUsePreferred,
|
getAlwaysUsePreferred,
|
||||||
setAlwaysUsePreferred,
|
setAlwaysUsePreferred,
|
||||||
|
|
||||||
|
|
|
@ -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(
|
browser.tabs.onUpdated.addListener(
|
||||||
(tabId, changeInfo, _) => {
|
(tabId, changeInfo, _) => {
|
||||||
let url;
|
let url;
|
||||||
|
|
|
@ -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 <span id="number">2</span> seconds
|
||||||
|
|
||||||
|
<script src="instance_offline.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -0,0 +1,2 @@
|
||||||
|
setTimeout(() => document.getElementById("number").innerHTML = '1', 1000);
|
||||||
|
setTimeout(() => document.getElementById("number").innerHTML = '0', 2000);
|
|
@ -109,6 +109,11 @@
|
||||||
<input id="always-use-preferred" type="checkbox" checked />
|
<input id="always-use-preferred" type="checkbox" checked />
|
||||||
</div>
|
</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">
|
<div class="some-block option-block">
|
||||||
<h4>Exceptions</h4>
|
<h4>Exceptions</h4>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -62,6 +62,11 @@ alwaysUsePreferredElement.addEventListener("change",
|
||||||
event => generalHelper.setAlwaysUsePreferred(event.target.checked)
|
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")
|
let applyThemeToSitesElement = document.getElementById("apply-theme-to-sites")
|
||||||
applyThemeToSitesElement.addEventListener("change",
|
applyThemeToSitesElement.addEventListener("change",
|
||||||
event => generalHelper.setApplyThemeToSites(event.target.checked)
|
event => generalHelper.setApplyThemeToSites(event.target.checked)
|
||||||
|
@ -92,7 +97,7 @@ for (const frontend of generalHelper.allPopupFrontends)
|
||||||
|
|
||||||
generalHelper.init().then(() => {
|
generalHelper.init().then(() => {
|
||||||
alwaysUsePreferredElement.checked = generalHelper.getAlwaysUsePreferred();
|
alwaysUsePreferredElement.checked = generalHelper.getAlwaysUsePreferred();
|
||||||
console.log("alwaysUsePreferredElement.checked", alwaysUsePreferredElement.checked);
|
autoRedirectElement.checked = generalHelper.getAutoRedirect();
|
||||||
themeElement.value = generalHelper.getTheme();
|
themeElement.value = generalHelper.getTheme();
|
||||||
applyThemeToSitesElement.checked = generalHelper.getApplyThemeToSites();
|
applyThemeToSitesElement.checked = generalHelper.getApplyThemeToSites();
|
||||||
instanceTypeElement.addEventListener("change",
|
instanceTypeElement.addEventListener("change",
|
||||||
|
|
|
@ -164,11 +164,9 @@ let popupFrontends;
|
||||||
generalHelper.init().then(() => {
|
generalHelper.init().then(() => {
|
||||||
popupFrontends = generalHelper.getPopupFrontends();
|
popupFrontends = generalHelper.getPopupFrontends();
|
||||||
|
|
||||||
for (const frontend of generalHelper.allPopupFrontends) {
|
for (const frontend of generalHelper.allPopupFrontends)
|
||||||
console.log(frontend)
|
|
||||||
if (!popupFrontends.includes(frontend))
|
if (!popupFrontends.includes(frontend))
|
||||||
document.getElementById(frontend).classList.add("hide")
|
document.getElementById(frontend).classList.add("hide")
|
||||||
else
|
else
|
||||||
document.getElementById(frontend).classList.remove("hide")
|
document.getElementById(frontend).classList.remove("hide")
|
||||||
}
|
|
||||||
});
|
});
|
Loading…
Reference in New Issue