diff --git a/packages/browser-extension/src/manifest.json b/packages/browser-extension/src/manifest.json index 6d884c7..f4ff8c0 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.4.3", + "version": "6.4.4", "default_locale": "en", "description": "__MSG_appDesc__", "icons": { diff --git a/packages/browser-extension/src/scripts/background.js b/packages/browser-extension/src/scripts/background.js index 4080097..d3ddec5 100644 --- a/packages/browser-extension/src/scripts/background.js +++ b/packages/browser-extension/src/scripts/background.js @@ -46,12 +46,16 @@ const storage = chrome.storage.local; */ const refreshData = (callback) => { - fetch(`${apiUrl}/data/`).then((result) => { - result.json().then(({ data }) => { - chrome.storage.local.set({ data }); - callback?.(data); + try { + fetch(`${apiUrl}/data/`).then((result) => { + result.json().then(({ data }) => { + chrome.storage.local.set({ data }); + callback?.(data); + }); }); - }); + } catch { + refreshData(callback); + } }; /** diff --git a/packages/browser-extension/src/scripts/content.js b/packages/browser-extension/src/scripts/content.js index 58416b4..a7c4c09 100644 --- a/packages/browser-extension/src/scripts/content.js +++ b/packages/browser-extension/src/scripts/content.js @@ -16,7 +16,7 @@ const dispatch = chrome.runtime.sendMessage; * @type {string} */ -const hostname = document.location.hostname.split('.').slice(-3).join('.').replace('www.', ''); +const hostname = getHostname(); /** * @description Options provided to observer @@ -80,6 +80,22 @@ function forceElementStyles(element) { element.style.setProperty('display', 'none', 'important'); } +/** + * @description Calculates current hostname + * @returns {string} + */ + +function getHostname() { + let hostname = document.location.hostname; + const referrer = document.referrer; + + if (referrer) { + hostname = new URL(referrer).hostname; + } + + return hostname.split('.').slice(-3).join('.').replace('www.', ''); +} + /** * @description Checks if an element is visible in the viewport * @param {HTMLElement} element @@ -177,7 +193,7 @@ function fix() { } } - if (skips.some((x) => !hostname.match(x.replace(/\*/g, '[^ ]*')))) { + if (skips.every((x) => !hostname.match(x.replace(/\*/g, '[^ ]*')))) { for (const element of [document.body, document.documentElement]) { element?.classList.remove(...(data?.classes ?? [])); element?.style.setProperty('position', 'initial', 'important'); @@ -280,7 +296,7 @@ window.addEventListener('pageshow', (event) => { */ window.addEventListener('run', () => { - if (data?.elements.length && state.enabled && !preview) { + if (data?.elements.length && document.body && state.enabled && !preview) { if (readingTime() < 4) { forceClean(document.body); } else {