Fix voe.sx

This commit is contained in:
bytedream 2024-07-28 16:35:58 +02:00
parent 2f186bda07
commit 94eee79218
2 changed files with 13 additions and 5 deletions

View File

@ -1,7 +1,7 @@
import './shared';
import type { Match } from '~/lib/match';
import { storageDelete, storageGet, storageSet } from '~/lib/settings';
import { Redirect, storageDelete, storageGet, storageSet } from '~/lib/settings';
import { getMatch } from '~/lib/match';
chrome.webRequest.onBeforeSendHeaders.addListener(
@ -27,13 +27,13 @@ chrome.webRequest.onBeforeSendHeaders.addListener(
chrome.webRequest.onBeforeRedirect.addListener(
async (details) => {
// check if redirects origins from a previous redirect
if ((await storageGet('redirect')) === undefined) {
if ((await Redirect.get()) == null) {
let match: Match | null;
if ((match = await getMatch(new URL(details.url).hostname)) !== null) {
await storageSet('redirect', match.id);
await Redirect.set(match);
}
} else {
await storageDelete('redirect');
await Redirect.delete();
}
},
{ urls: ['<all_urls>'], types: ['main_frame', 'sub_frame'] }

View File

@ -12,6 +12,14 @@ async function main() {
redirect = true;
}
// some sites have a javascript based redirect, e.g. example.com redirects to example.org by changing
// window.location.href instead of a 3XX http redirect. an empty body is a sign that such a javascript redirect
// occurred
if (document.body == null) {
await Redirect.set(match);
return;
}
const re = document.body.innerHTML.match(match.regex);
if (re === null) {
return;
@ -20,7 +28,7 @@ async function main() {
await Redirect.delete();
}
let url: string;
let url: string | null;
try {
url = await match.match(re);
} catch (e) {