From 79a30f95e497245b298924248cf65efd34fb3dd7 Mon Sep 17 00:00:00 2001 From: wanhose Date: Sun, 14 Aug 2022 11:58:31 +0200 Subject: [PATCH 1/2] fix(browser-extension): minor fixes about scripts --- .../browser-extension/src/scripts/content.js | 25 +++--- .../browser-extension/src/scripts/popup.js | 83 ++++++++++--------- 2 files changed, 59 insertions(+), 49 deletions(-) diff --git a/packages/browser-extension/src/scripts/content.js b/packages/browser-extension/src/scripts/content.js index 2ff2097..ba7dd94 100644 --- a/packages/browser-extension/src/scripts/content.js +++ b/packages/browser-extension/src/scripts/content.js @@ -31,6 +31,13 @@ const options = { childList: true, subtree: true }; const preview = hostname.startsWith('consent.') || hostname.startsWith('myprivacy.'); +/** + * @description Extension state + * @type {{ enabled: boolean }} + */ + +let state = { enabled: true }; + /** * @description Matches if node element is removable * @param {Element} node @@ -128,16 +135,12 @@ const observer = new MutationObserver((mutations) => { * @listens window#pageshow */ -window.addEventListener('pageshow', async (event) => { - if (event.persisted) { - const state = await dispatch({ hostname, type: 'GET_STATE' }); +window.addEventListener('pageshow', (event) => { + if (data?.elements.length && event.persisted && state.enabled && !preview) { + const nodes = [...document.querySelectorAll(data.elements)]; - if (data?.elements?.length && state?.enabled && !preview) { - const nodes = [...document.querySelectorAll(data.elements)]; - - fix(); - if (nodes.length) clean(nodes, true); - } + fix(); + if (nodes.length) clean(nodes, true); } }); @@ -147,10 +150,10 @@ window.addEventListener('pageshow', async (event) => { */ (async () => { - const state = await dispatch({ hostname, type: 'GET_STATE' }); + state = (await dispatch({ hostname, type: 'GET_STATE' })) ?? state; dispatch({ type: 'ENABLE_POPUP' }); - if (state?.enabled) { + if (state.enabled) { data = await dispatch({ hostname, type: 'GET_DATA' }); observer.observe(document.body ?? document.documentElement, options); dispatch({ type: 'ENABLE_ICON' }); diff --git a/packages/browser-extension/src/scripts/popup.js b/packages/browser-extension/src/scripts/popup.js index 7509a4a..ebedf3e 100644 --- a/packages/browser-extension/src/scripts/popup.js +++ b/packages/browser-extension/src/scripts/popup.js @@ -54,16 +54,55 @@ const isEdge = navigator.userAgent.indexOf('Edg') !== -1; const isFirefox = navigator.userAgent.indexOf('Firefox') !== -1; +/** + * @description Extension state + * @type {{ enabled: boolean }} + */ + +let state = { enabled: true }; + +/** + * @async + * @description Setup stars handlers and result message links + */ + +const handleContentLoaded = async () => { + const tab = await dispatch({ type: 'GET_TAB' }); + + hostname = tab?.url + ? new URL(tab.url).hostname.split('.').slice(-3).join('.').replace('www.', '') + : undefined; + state = (await dispatch({ hostname, type: 'GET_STATE' })) ?? state; + + const host = document.getElementById('host'); + host.innerText = hostname ?? 'unknown'; + + const like = document.getElementById('like'); + like.addEventListener('click', handleRate); + + const power = document.getElementById('power'); + power.addEventListener('change', handlePowerChange); + if (!state.enabled) power.removeAttribute('checked'); + + const store = document.getElementById('store'); + if (isEdge) store?.setAttribute('href', edgeUrl); + else if (isChromium) store?.setAttribute('href', chromeUrl); + else if (isFirefox) store?.setAttribute('href', firefoxUrl); + + const unlike = document.getElementById('unlike'); + unlike.addEventListener('click', handleRate); + + translate(); +}; + /** * @description Disables or enables extension on current page */ const handlePowerChange = async () => { - const state = await dispatch({ hostname, type: 'GET_STATE' }); - const enabled = typeof state?.enabled === 'undefined' ? false : !state.enabled; - - dispatch({ hostname, state: { enabled }, type: 'UPDATE_STATE' }); - chrome.tabs.reload({ bypassCache: true }); + state = { enabled: !state.enabled }; + dispatch({ hostname, state, type: 'UPDATE_STATE' }); + await chrome.tabs.reload({ bypassCache: true }); }; /** @@ -89,38 +128,6 @@ const handleRate = (event) => { } }; -/** - * @async - * @description Setup stars handlers and result message links - */ - -const handleContentLoaded = async () => { - const state = await dispatch({ hostname, type: 'GET_STATE' }); - const tab = await dispatch({ type: 'GET_TAB' }); - - hostname = tab?.url - ? new URL(tab.url).hostname.split('.').slice(-3).join('.').replace('www.', '') - : undefined; - - translate(); - - const host = document.getElementById('host'); - const like = document.getElementById('like'); - const power = document.getElementById('power'); - const store = document.getElementById('store'); - const unlike = document.getElementById('unlike'); - - like.addEventListener('click', handleRate); - power.addEventListener('change', handlePowerChange); - unlike.addEventListener('click', handleRate); - - host.innerText = hostname ?? 'unknown'; - if (isEdge) store?.setAttribute('href', edgeUrl); - else if (isChromium) store?.setAttribute('href', chromeUrl); - else if (isFirefox) store?.setAttribute('href', firefoxUrl); - if (!state.enabled) power.removeAttribute('checked'); -}; - /** * @description Applies translations to tags with i18n data attribute */ @@ -138,7 +145,7 @@ const translate = () => { /** * @description Listen to document ready - * @listens document#ready + * @listens document#DOMContentLoaded */ document.addEventListener('DOMContentLoaded', handleContentLoaded); From ce64c463a42242b8453ddcfe1e61c75d62e9211a Mon Sep 17 00:00:00 2001 From: wanhose Date: Sun, 14 Aug 2022 11:58:48 +0200 Subject: [PATCH 2/2] chore(browser-extension): upgrade 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 9254b37..f464a51 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": "6.0.1", + "version": "6.0.2", "default_locale": "en", "description": "__MSG_appDesc__", "icons": {