From 32da94c4df70caf7a15f6d5c3b527b28a4f0abd9 Mon Sep 17 00:00:00 2001 From: wanhose Date: Sun, 4 Aug 2024 18:30:21 +0200 Subject: [PATCH 01/11] fix(rules): issue #743 --- packages/browser-extension/src/rules.json | 59 ++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/packages/browser-extension/src/rules.json b/packages/browser-extension/src/rules.json index 008c8eb..0938cd6 100644 --- a/packages/browser-extension/src/rules.json +++ b/packages/browser-extension/src/rules.json @@ -110,7 +110,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||optanon.blob.core.windows.net^" + "urlFilter": "||eu.fastcmp.com^" } }, { @@ -119,6 +119,44 @@ "action": { "type": "block" }, + "condition": { + "resourceTypes": [ + "font", + "image", + "media", + "object", + "script", + "stylesheet", + "xmlhttprequest" + ], + "urlFilter": "||optanon.blob.core.windows.net^" + } + }, + { + "id": 8, + "priority": 1, + "action": { + "type": "block" + }, + "condition": { + "resourceTypes": [ + "font", + "image", + "media", + "object", + "script", + "stylesheet", + "xmlhttprequest" + ], + "urlFilter": "||static.fastcmp.com^" + } + }, + { + "id": 9, + "priority": 1, + "action": { + "type": "block" + }, "condition": { "resourceTypes": [ "font", @@ -131,5 +169,24 @@ ], "urlFilter": "||wcpstatic.microsoft.com^" } + }, + { + "id": 10, + "priority": 1, + "action": { + "type": "block" + }, + "condition": { + "resourceTypes": [ + "font", + "image", + "media", + "object", + "script", + "stylesheet", + "xmlhttprequest" + ], + "urlFilter": "https://www.lensois.com/wp-admin/admin-ajax.php" + } } ] From c017a298d33fb7e802330a20a9168166903c8c41 Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 10 Aug 2024 08:18:15 +0200 Subject: [PATCH 02/11] chore(browser-extension): upgrade manifest version --- packages/browser-extension/src/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser-extension/src/manifest.json b/packages/browser-extension/src/manifest.json index d059c8c..a4d01c3 100644 --- a/packages/browser-extension/src/manifest.json +++ b/packages/browser-extension/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Cookie Dialog Monster", - "version": "7.1.1", + "version": "7.1.2", "default_locale": "en", "description": "__MSG_appDesc__", "icons": { From a7e1ddfba9a7e09e347777b0617fbf4f0cc00bf9 Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 10 Aug 2024 09:52:29 +0200 Subject: [PATCH 03/11] fix(browser-extension): bad performance when parent updates but its children weren't checked --- .../browser-extension/src/scripts/content.js | 62 +++++++++++++------ 1 file changed, 44 insertions(+), 18 deletions(-) diff --git a/packages/browser-extension/src/scripts/content.js b/packages/browser-extension/src/scripts/content.js index 6f39938..1fa0efb 100644 --- a/packages/browser-extension/src/scripts/content.js +++ b/packages/browser-extension/src/scripts/content.js @@ -140,13 +140,22 @@ function clean(elements, skipMatch) { requestAnimationFrame(chunk); } +/** + * @description Check if element contains a common word + * @param {HTMLElement} element + */ +function containsCommonWord(element) { + return !!element.outerHTML.match(new RegExp(commonWords.join('|'))); +} + /** * @description Force a DOM clean in the specific element * @param {HTMLElement} element * @returns {void} */ function forceClean(element) { - const elements = [...element.querySelectorAll(tokens.selectors)]; + const nodes = [...element.querySelectorAll(tokens.selectors)]; + const elements = nodes.flatMap((node) => filterMapEarly(node)); if (elements.length) { fix(); @@ -262,15 +271,29 @@ function match(element, skipMatch) { (skipMatch || element.matches(tokens.selectors)) ); } else { - // 2023-06-10: fix edge case force cleaning on children if no attributes - if (commonWords && element.outerHTML.match(new RegExp(commonWords.join('|')))) { - forceClean(element); - } + forceClean(element); } return false; } +/** + * @description Filter early nodes + * @param {Node} node + * @param {boolean} stopRecursion + */ +function filterMapEarly(node, stopRecursion) { + if (node.nodeType !== Node.ELEMENT_NODE || !(node instanceof HTMLElement)) { + return []; + } + + if (commonWords && containsCommonWord(node) && !stopRecursion) { + return [node, ...[...node.children].flatMap((node) => filterMapEarly(node, true))]; + } + + return [node]; +} + /** * @description Fix data, middle consent page and scroll issues * @returns {void} @@ -400,7 +423,8 @@ const observer = new MutationObserver((mutations) => { return; } - const elements = mutations.flatMap((mutation) => Array.from(mutation.addedNodes)); + const nodes = mutations.flatMap((mutation) => [...mutation.addedNodes]); + const elements = nodes.flatMap((node) => filterMapEarly(node)); window.dispatchEvent(new CustomEvent(triggerEventName, { detail: { elements } })); }); @@ -456,7 +480,7 @@ window.addEventListener('pageshow', async (event) => { }); /** - * @description Force clean when this event is fired + * @description Clean DOM when this event is fired * @listens window#cookie-dialog-monster * @returns {void} */ @@ -468,17 +492,19 @@ window.addEventListener(triggerEventName, (event) => { clean(event.detail.elements, event.detail.skipMatch); } else { // 2024-08-03: look into the first level of important nodes, there are dialogs there very often - clean([ - ...document.body.children, - ...Array.from(document.getElementsByClassName('container')[0]?.children ?? []), - ...Array.from(document.getElementsByClassName('layout')[0]?.children ?? []), - ...Array.from(document.getElementsByClassName('page')[0]?.children ?? []), - ...Array.from(document.getElementsByClassName('wrapper')[0]?.children ?? []), - ...Array.from(document.getElementById('__next')?.children ?? []), - ...Array.from(document.getElementById('app')?.children ?? []), - ...Array.from(document.getElementById('main')?.children ?? []), - ...Array.from(document.getElementById('root')?.children ?? []), - ]); + clean( + [ + ...document.body.children, + ...[...(document.getElementsByClassName('container')[0]?.children ?? [])], + ...[...(document.getElementsByClassName('layout')[0]?.children ?? [])], + ...[...(document.getElementsByClassName('page')[0]?.children ?? [])], + ...[...(document.getElementsByClassName('wrapper')[0]?.children ?? [])], + ...[...(document.getElementById('__next')?.children ?? [])], + ...[...(document.getElementById('app')?.children ?? [])], + ...[...(document.getElementById('main')?.children ?? [])], + ...[...(document.getElementById('root')?.children ?? [])], + ].flatMap((node) => filterMapEarly(node)) + ); } } }); From c4c08ee7c73e508449e83eb53d93f77bede95ffe Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 10 Aug 2024 09:57:25 +0200 Subject: [PATCH 04/11] fix(rules): issue #760 --- packages/browser-extension/src/rules.json | 31 ++++++++++++++++++----- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/packages/browser-extension/src/rules.json b/packages/browser-extension/src/rules.json index 0938cd6..71f3175 100644 --- a/packages/browser-extension/src/rules.json +++ b/packages/browser-extension/src/rules.json @@ -72,7 +72,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||cmp.inmobi.com^" + "urlFilter": "||cdntranscend.eventbrite.com^" } }, { @@ -91,7 +91,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||consent.trustarc.com^" + "urlFilter": "||cmp.inmobi.com^" } }, { @@ -110,7 +110,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||eu.fastcmp.com^" + "urlFilter": "||consent.trustarc.com^" } }, { @@ -129,7 +129,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||optanon.blob.core.windows.net^" + "urlFilter": "||eu.fastcmp.com^" } }, { @@ -148,7 +148,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||static.fastcmp.com^" + "urlFilter": "||optanon.blob.core.windows.net^" } }, { @@ -167,7 +167,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||wcpstatic.microsoft.com^" + "urlFilter": "||static.fastcmp.com^" } }, { @@ -176,6 +176,25 @@ "action": { "type": "block" }, + "condition": { + "resourceTypes": [ + "font", + "image", + "media", + "object", + "script", + "stylesheet", + "xmlhttprequest" + ], + "urlFilter": "||wcpstatic.microsoft.com^" + } + }, + { + "id": 11, + "priority": 1, + "action": { + "type": "block" + }, "condition": { "resourceTypes": [ "font", From 61f7de0e22008d60bdf34f462e756b60b4e2f4bd Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 10 Aug 2024 09:59:39 +0200 Subject: [PATCH 05/11] fix(rules): issue #759 --- packages/browser-extension/src/rules.json | 27 +++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/packages/browser-extension/src/rules.json b/packages/browser-extension/src/rules.json index 71f3175..4346fef 100644 --- a/packages/browser-extension/src/rules.json +++ b/packages/browser-extension/src/rules.json @@ -129,7 +129,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||eu.fastcmp.com^" + "urlFilter": "||cp.as.com^" } }, { @@ -148,7 +148,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||optanon.blob.core.windows.net^" + "urlFilter": "||eu.fastcmp.com^" } }, { @@ -167,7 +167,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||static.fastcmp.com^" + "urlFilter": "||optanon.blob.core.windows.net^" } }, { @@ -186,7 +186,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||wcpstatic.microsoft.com^" + "urlFilter": "||static.fastcmp.com^" } }, { @@ -195,6 +195,25 @@ "action": { "type": "block" }, + "condition": { + "resourceTypes": [ + "font", + "image", + "media", + "object", + "script", + "stylesheet", + "xmlhttprequest" + ], + "urlFilter": "||wcpstatic.microsoft.com^" + } + }, + { + "id": 12, + "priority": 1, + "action": { + "type": "block" + }, "condition": { "resourceTypes": [ "font", From 007dcc609532fb6fdad456ade27b75ddfb6fdaaf Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 10 Aug 2024 10:12:40 +0200 Subject: [PATCH 06/11] fix(rules): issue #756 --- packages/browser-extension/src/rules.json | 35 +++++++++++++++++------ 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/packages/browser-extension/src/rules.json b/packages/browser-extension/src/rules.json index 4346fef..05b5fe2 100644 --- a/packages/browser-extension/src/rules.json +++ b/packages/browser-extension/src/rules.json @@ -72,7 +72,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||cdntranscend.eventbrite.com^" + "urlFilter": "||cdn.optable.co^" } }, { @@ -91,7 +91,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||cmp.inmobi.com^" + "urlFilter": "||cdntranscend.eventbrite.com^" } }, { @@ -110,7 +110,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||consent.trustarc.com^" + "urlFilter": "||cmp.inmobi.com^" } }, { @@ -129,7 +129,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||cp.as.com^" + "urlFilter": "||consent.trustarc.com^" } }, { @@ -148,7 +148,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||eu.fastcmp.com^" + "urlFilter": "||cp.as.com^" } }, { @@ -167,7 +167,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||optanon.blob.core.windows.net^" + "urlFilter": "||eu.fastcmp.com^" } }, { @@ -186,7 +186,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||static.fastcmp.com^" + "urlFilter": "||optanon.blob.core.windows.net^" } }, { @@ -205,7 +205,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||wcpstatic.microsoft.com^" + "urlFilter": "||static.fastcmp.com^" } }, { @@ -214,6 +214,25 @@ "action": { "type": "block" }, + "condition": { + "resourceTypes": [ + "font", + "image", + "media", + "object", + "script", + "stylesheet", + "xmlhttprequest" + ], + "urlFilter": "||wcpstatic.microsoft.com^" + } + }, + { + "id": 13, + "priority": 1, + "action": { + "type": "block" + }, "condition": { "resourceTypes": [ "font", From cb0216fdac579f1eea99d246e6bd83412b853085 Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 10 Aug 2024 10:36:46 +0200 Subject: [PATCH 07/11] fix(rules): issue #753 --- packages/browser-extension/src/rules.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/browser-extension/src/rules.json b/packages/browser-extension/src/rules.json index 05b5fe2..afcb385 100644 --- a/packages/browser-extension/src/rules.json +++ b/packages/browser-extension/src/rules.json @@ -233,6 +233,17 @@ "action": { "type": "block" }, + "condition": { + "resourceTypes": ["script"], + "urlFilter": "||www.redditstatic.com/onetrust.*.js" + } + }, + { + "id": 14, + "priority": 1, + "action": { + "type": "block" + }, "condition": { "resourceTypes": [ "font", From 2fd2daa368afe1d797d94aa02576fe9fc8abe8bf Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 10 Aug 2024 11:09:07 +0200 Subject: [PATCH 08/11] fix(rules): issue #748 --- packages/browser-extension/src/rules.json | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/browser-extension/src/rules.json b/packages/browser-extension/src/rules.json index afcb385..e14fa19 100644 --- a/packages/browser-extension/src/rules.json +++ b/packages/browser-extension/src/rules.json @@ -233,13 +233,32 @@ "action": { "type": "block" }, + "condition": { + "resourceTypes": [ + "font", + "image", + "media", + "object", + "script", + "stylesheet", + "xmlhttprequest" + ], + "urlFilter": "||webtools.europa.eu/js/webtools.cck.js^" + } + }, + { + "id": 14, + "priority": 1, + "action": { + "type": "block" + }, "condition": { "resourceTypes": ["script"], "urlFilter": "||www.redditstatic.com/onetrust.*.js" } }, { - "id": 14, + "id": 15, "priority": 1, "action": { "type": "block" From 4c4ff03fa330c14ae0dcd9c66cd7a963cf8777fc Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 10 Aug 2024 11:20:25 +0200 Subject: [PATCH 09/11] fix(rules): issue #745 --- packages/browser-extension/src/rules.json | 90 ++++++++++++++++------- 1 file changed, 64 insertions(+), 26 deletions(-) diff --git a/packages/browser-extension/src/rules.json b/packages/browser-extension/src/rules.json index e14fa19..be25ba6 100644 --- a/packages/browser-extension/src/rules.json +++ b/packages/browser-extension/src/rules.json @@ -148,26 +148,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||cp.as.com^" - } - }, - { - "id": 9, - "priority": 1, - "action": { - "type": "block" - }, - "condition": { - "resourceTypes": [ - "font", - "image", - "media", - "object", - "script", - "stylesheet", - "xmlhttprequest" - ], - "urlFilter": "||eu.fastcmp.com^" + "urlFilter": "||consent.cookiebot.com^" } }, { @@ -186,7 +167,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||optanon.blob.core.windows.net^" + "urlFilter": "||consentcdn.cookiebot.com^" } }, { @@ -205,7 +186,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||static.fastcmp.com^" + "urlFilter": "||cp.as.com^" } }, { @@ -224,7 +205,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||wcpstatic.microsoft.com^" + "urlFilter": "||eu.fastcmp.com^" } }, { @@ -243,7 +224,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||webtools.europa.eu/js/webtools.cck.js^" + "urlFilter": "||optanon.blob.core.windows.net^" } }, { @@ -253,8 +234,16 @@ "type": "block" }, "condition": { - "resourceTypes": ["script"], - "urlFilter": "||www.redditstatic.com/onetrust.*.js" + "resourceTypes": [ + "font", + "image", + "media", + "object", + "script", + "stylesheet", + "xmlhttprequest" + ], + "urlFilter": "||static.fastcmp.com^" } }, { @@ -263,6 +252,55 @@ "action": { "type": "block" }, + "condition": { + "resourceTypes": [ + "font", + "image", + "media", + "object", + "script", + "stylesheet", + "xmlhttprequest" + ], + "urlFilter": "||wcpstatic.microsoft.com^" + } + }, + { + "id": 16, + "priority": 1, + "action": { + "type": "block" + }, + "condition": { + "resourceTypes": [ + "font", + "image", + "media", + "object", + "script", + "stylesheet", + "xmlhttprequest" + ], + "urlFilter": "||webtools.europa.eu/js/webtools.cck.js^" + } + }, + { + "id": 17, + "priority": 1, + "action": { + "type": "block" + }, + "condition": { + "resourceTypes": ["script"], + "urlFilter": "||www.redditstatic.com/onetrust.*.js" + } + }, + { + "id": 18, + "priority": 1, + "action": { + "type": "block" + }, "condition": { "resourceTypes": [ "font", From cbb62ee80cabb48d8146e19d425fd156276eb6bd Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 10 Aug 2024 11:37:17 +0200 Subject: [PATCH 10/11] refactor(rules): normalize filters --- packages/browser-extension/src/rules.json | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/browser-extension/src/rules.json b/packages/browser-extension/src/rules.json index be25ba6..5fe15a5 100644 --- a/packages/browser-extension/src/rules.json +++ b/packages/browser-extension/src/rules.json @@ -224,7 +224,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||optanon.blob.core.windows.net^" + "urlFilter": "||lensois.com/wp-admin/admin-ajax.php" } }, { @@ -243,7 +243,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||static.fastcmp.com^" + "urlFilter": "||optanon.blob.core.windows.net^" } }, { @@ -262,7 +262,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||wcpstatic.microsoft.com^" + "urlFilter": "||redditstatic.com/onetrust.*.js" } }, { @@ -281,7 +281,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "||webtools.europa.eu/js/webtools.cck.js^" + "urlFilter": "||static.fastcmp.com^" } }, { @@ -291,8 +291,16 @@ "type": "block" }, "condition": { - "resourceTypes": ["script"], - "urlFilter": "||www.redditstatic.com/onetrust.*.js" + "resourceTypes": [ + "font", + "image", + "media", + "object", + "script", + "stylesheet", + "xmlhttprequest" + ], + "urlFilter": "||wcpstatic.microsoft.com^" } }, { @@ -311,7 +319,7 @@ "stylesheet", "xmlhttprequest" ], - "urlFilter": "https://www.lensois.com/wp-admin/admin-ajax.php" + "urlFilter": "||webtools.europa.eu/js/webtools.cck.js^" } } ] From 769327c4c5106fda0e6191d3c4625957557dbc26 Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 10 Aug 2024 13:04:09 +0200 Subject: [PATCH 11/11] fix(browser-extension): restore/run fn --- .../browser-extension/src/scripts/content.js | 108 +++++++++--------- 1 file changed, 53 insertions(+), 55 deletions(-) diff --git a/packages/browser-extension/src/scripts/content.js b/packages/browser-extension/src/scripts/content.js index 1fa0efb..fbdb9dd 100644 --- a/packages/browser-extension/src/scripts/content.js +++ b/packages/browser-extension/src/scripts/content.js @@ -16,7 +16,13 @@ /** * @typedef {Object} RunParams - * @property {boolean | undefined} skipTriggerEvent + * @property {HTMLElement[] | undefined} elements + * @property {boolean | undefined} skipMatch + */ + +/** + * @typedef {Object} SetUpParams + * @property {boolean | undefined} skipRunFn */ if (typeof browser === 'undefined') { @@ -89,11 +95,6 @@ const seen = []; */ let state = { enabled: true }; -/** - * @description Event name to trigger the cleaning process - */ -const triggerEventName = 'cookie-dialog-monster'; - /** * @description Clean DOM * @param {Element[]} elements @@ -382,11 +383,43 @@ function restoreDOM() { } /** - * @async - * @description Run the extension - * @param {RunParams | undefined} params + * @description Clean DOM when this function is called + * @param {RunParams} params + * @returns {void} */ -async function run(params) { +function run(params = {}) { + if (document.body?.children.length && !preview && state.enabled && tokens?.selectors?.length) { + fix(); + + if (params.elements?.length) { + clean(params.elements, params.skipMatch); + } + + if (params.elements === undefined) { + // 2024-08-03: look into the first level of important nodes, there are dialogs there very often + clean( + [ + ...document.body.children, + ...[...(document.getElementsByClassName('container')[0]?.children ?? [])], + ...[...(document.getElementsByClassName('layout')[0]?.children ?? [])], + ...[...(document.getElementsByClassName('page')[0]?.children ?? [])], + ...[...(document.getElementsByClassName('wrapper')[0]?.children ?? [])], + ...[...(document.getElementById('__next')?.children ?? [])], + ...[...(document.getElementById('app')?.children ?? [])], + ...[...(document.getElementById('main')?.children ?? [])], + ...[...(document.getElementById('root')?.children ?? [])], + ].flatMap((node) => filterMapEarly(node)) + ); + } + } +} + +/** + * @async + * @description Set up the extension + * @param {SetUpParams | undefined} params + */ +async function setUp(params) { state = (await dispatch({ hostname, type: 'GET_HOSTNAME_STATE' })) ?? state; dispatch({ type: 'ENABLE_POPUP' }); @@ -405,8 +438,8 @@ async function run(params) { dispatch({ type: 'ENABLE_ICON' }); observer.observe(document.body ?? document.documentElement, options); - if (!params?.skipTriggerEvent) { - window.dispatchEvent(new CustomEvent(triggerEventName)); + if (!params?.skipRunFn) { + run(); } } else { dispatch({ type: 'DISABLE_ICON' }); @@ -426,7 +459,7 @@ const observer = new MutationObserver((mutations) => { const nodes = mutations.flatMap((mutation) => [...mutation.addedNodes]); const elements = nodes.flatMap((node) => filterMapEarly(node)); - window.dispatchEvent(new CustomEvent(triggerEventName, { detail: { elements } })); + run({ elements }); }); /** @@ -437,22 +470,17 @@ browser.runtime.onMessage.addListener(async (message) => { switch (message.type) { case 'RESTORE': { restoreDOM(); + await setUp({ skipRunFn: true }); break; } case 'RUN': { if (removables.length) { - window.dispatchEvent(new CustomEvent(triggerEventName), { - detail: { - elements: removables, - skipMatch: true, - }, - }); + await setUp({ skipRunFn: true }); + run({ elements: removables, skipMatch: true }); } break; } } - - await run({ skipTriggerEvent: message.type === 'RESTORE' }); }); /** @@ -463,7 +491,7 @@ browser.runtime.onMessage.addListener(async (message) => { */ window.addEventListener('DOMContentLoaded', async () => { if (document.visibilityState === 'visible') { - await run(); + await setUp(); } }); @@ -474,38 +502,8 @@ window.addEventListener('DOMContentLoaded', async () => { */ window.addEventListener('pageshow', async (event) => { if (document.visibilityState === 'visible' && event.persisted) { - await run(); - window.dispatchEvent(new CustomEvent(triggerEventName)); - } -}); - -/** - * @description Clean DOM when this event is fired - * @listens window#cookie-dialog-monster - * @returns {void} - */ -window.addEventListener(triggerEventName, (event) => { - if (document.body?.children.length && !preview && state.enabled && tokens?.selectors?.length) { - fix(); - - if (event.detail?.elements) { - clean(event.detail.elements, event.detail.skipMatch); - } else { - // 2024-08-03: look into the first level of important nodes, there are dialogs there very often - clean( - [ - ...document.body.children, - ...[...(document.getElementsByClassName('container')[0]?.children ?? [])], - ...[...(document.getElementsByClassName('layout')[0]?.children ?? [])], - ...[...(document.getElementsByClassName('page')[0]?.children ?? [])], - ...[...(document.getElementsByClassName('wrapper')[0]?.children ?? [])], - ...[...(document.getElementById('__next')?.children ?? [])], - ...[...(document.getElementById('app')?.children ?? [])], - ...[...(document.getElementById('main')?.children ?? [])], - ...[...(document.getElementById('root')?.children ?? [])], - ].flatMap((node) => filterMapEarly(node)) - ); - } + await setUp(); + run(); } }); @@ -518,6 +516,6 @@ window.addEventListener(triggerEventName, (event) => { window.addEventListener('visibilitychange', async () => { if (document.visibilityState === 'visible' && !initiallyVisible) { initiallyVisible = true; - await run(); + await setUp(); } });