mirror of
https://codeberg.org/LibRedirect/libredirect.git
synced 2025-02-09 08:38:40 +01:00
Added autoRedirect off offline instances option
This commit is contained in:
parent
619f675114
commit
04fcac3920
@ -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,
|
||||
|
||||
|
@ -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;
|
||||
|
29
src/pages/errors/instance_offline.html
Normal file
29
src/pages/errors/instance_offline.html
Normal file
@ -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>
|
2
src/pages/errors/instance_offline.js
Normal file
2
src/pages/errors/instance_offline.js
Normal file
@ -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 />
|
||||
</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>
|
||||
|
@ -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",
|
||||
|
@ -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")
|
||||
}
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user