From f200312ad54bf2b3d2f5152d8786194ad784296f Mon Sep 17 00:00:00 2001 From: bytedream Date: Sun, 11 Jan 2026 21:17:30 +0100 Subject: [PATCH] fix background listeners not working --- src/entrypoints/background/index.ts | 55 +++++++++++++++++------------ 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/src/entrypoints/background/index.ts b/src/entrypoints/background/index.ts index e76bf6f..f469316 100644 --- a/src/entrypoints/background/index.ts +++ b/src/entrypoints/background/index.ts @@ -1,30 +1,41 @@ -import { UrlReferer } from '@/lib/settings'; +import { getHost } from '@/lib/host'; +import { HostSettings, UrlReferer } from '@/lib/settings'; export default defineBackground(() => { browser.runtime.onMessage.addListener(async (message) => { if (message.action == 'ff2mpv') { await browser.runtime.sendNativeMessage('ff2mpv', { url: message.url }); } - - // the following listener is only available in mv2 - if (import.meta.env.MANIFEST_VERSION === 3) return; - - browser.webRequest.onBeforeSendHeaders.addListener( - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - async (details) => { - const referer = await UrlReferer.get(new URL(details.url).hostname); - if (!referer) return; - - details.requestHeaders!.push({ - name: 'Referer', - value: `https://${referer}/` - }); - - return { requestHeaders: details.requestHeaders }; - }, - { urls: [''], types: ['xmlhttprequest'] }, - ['blocking', 'requestHeaders'] - ); }); + + // the following listener is only available in mv2 + if (import.meta.env.MANIFEST_VERSION === 3) return; + + browser.webRequest.onBeforeSendHeaders.addListener( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + async (details) => { + const referer = await UrlReferer.get(new URL(details.url).hostname); + if (!referer) return; + + details.requestHeaders!.push({ + name: 'Referer', + value: `https://${referer}/` + }); + + return { requestHeaders: details.requestHeaders }; + }, + { urls: [''], types: ['xmlhttprequest'] }, + ['blocking', 'requestHeaders'] + ); + + browser.webRequest.onBeforeRedirect.addListener( + async (details) => { + const host = await getHost(new URL(details.url).hostname); + if (!host) return; + + await HostSettings.addTemporaryHostDomain(host, new URL(details.redirectUrl).hostname); + }, + { urls: [''], types: ['main_frame', 'sub_frame'] } + ); });