From 263c0497f30b9014f54ac6a04dca8e5bba77844c Mon Sep 17 00:00:00 2001 From: Bauke Date: Fri, 14 Oct 2022 18:15:04 +0200 Subject: [PATCH] Add the background script. --- source/background-scripts/initialize.ts | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 source/background-scripts/initialize.ts diff --git a/source/background-scripts/initialize.ts b/source/background-scripts/initialize.ts new file mode 100644 index 0000000..4985ed1 --- /dev/null +++ b/source/background-scripts/initialize.ts @@ -0,0 +1,36 @@ +import browser from 'webextension-polyfill'; + +import {parseRedirect} from '../redirect/exports.js'; + +async function browserActionClicked() { + await browser.runtime.openOptionsPage(); +} + +if (import.meta.env.VITE_BROWSER === 'chromium') { + browser.action.onClicked.addListener(browserActionClicked); +} else { + browser.browserAction.onClicked.addListener(browserActionClicked); +} + +browser.runtime.onInstalled.addListener(async () => { + if (import.meta.env.DEV) { + await browser.runtime.openOptionsPage(); + } +}); + +browser.webNavigation.onBeforeNavigate.addListener(async (details) => { + const url = new URL(details.url); + + for (const parameters of Object.values(await browser.storage.local.get())) { + const redirect = parseRedirect(parameters); + if (redirect === undefined) { + continue; + } + + if (redirect.isMatch(url)) { + const redirectedUrl = redirect.redirect(url); + await browser.tabs.update({url: redirectedUrl.href}); + break; + } + } +});