diff --git a/src/background/webrequests.ts b/src/background/webrequests.ts index 169ac11a..0669a6eb 100644 --- a/src/background/webrequests.ts +++ b/src/background/webrequests.ts @@ -15,7 +15,7 @@ export const requestEvents = Object.keys(requestEventExpraInfoSpecMap) // eslint-disable-next-line @typescript-eslint/ban-types export const LISTENERS: Record> = {} -export const registerWebRequestAutocmd = ( +export const registerWebRequestAutocmd = async ( requestEvent: string, pattern: string, func: string, @@ -23,8 +23,15 @@ export const registerWebRequestAutocmd = ( // I'm being lazy - strictly the functions map strings to void | blocking responses // eslint-disable-next-line @typescript-eslint/ban-types const listener = eval(func) as Function - if (!LISTENERS[requestEvent]) LISTENERS[requestEvent] = {} + + if (!(requestEvent in LISTENERS)) { + LISTENERS[requestEvent] = {} + } + if (pattern in LISTENERS[requestEvent]) { + await unregisterWebRequestAutocmd(requestEvent, pattern) + } LISTENERS[requestEvent][pattern] = listener + return browser.webRequest["on" + requestEvent].addListener( listener, { urls: [pattern] },