diff --git a/_locales/de/messages.json b/_locales/de/messages.json index 36645fa..0a105e8 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -2,5 +2,33 @@ "appDesc": { "description": "Hat jemand Dialoge zur Cookie-Zustimmung gesagt? 😋", "message": "Hat jemand Dialoge zur Cookie-Zustimmung gesagt? 😋" + }, + "contextMenuText": { + "description": "Webseite melden...", + "message": "Webseite melden..." + }, + "footerText": { + "description": "Mit ❤️ gemacht von", + "message": "Mit ❤️ gemacht von" + }, + "helpText": { + "description": "Hilfe oder Probleme?", + "message": "Hilfe oder Probleme?" + }, + "negativeText": { + "description": "Ups! Wir entschuldigen uns für die Unannehmlichkeiten, bitte kontaktieren Sie uns 😅", + "message": "Ups! Wir entschuldigen uns für die Unannehmlichkeiten, bitte kontaktieren Sie uns 😅" + }, + "positiveText": { + "description": "Dankeschön! Bitte bewerten Sie unsere Erweiterung hier 😍", + "message": "Dankeschön! Bitte bewerten Sie unsere Erweiterung hier 😍" + }, + "reviewText": { + "description": "Gefällt dir diese Erweiterung?", + "message": "Gefällt dir diese Erweiterung?" + }, + "toggleText": { + "description": "Essensdialoge in ", + "message": "Essensdialoge in " } } diff --git a/_locales/en/messages.json b/_locales/en/messages.json index b81ac83..5e1a5a0 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -2,5 +2,33 @@ "appDesc": { "description": "Did someone say cookie consent dialogs? 😋", "message": "Did someone say cookie consent dialogs? 😋" + }, + "contextMenuText": { + "description": "Report site...", + "message": "Report site..." + }, + "footerText": { + "description": "Made with ❤️ by", + "message": "Made with ❤️ by" + }, + "helpText": { + "description": "Help or issues?", + "message": "Help or issues?" + }, + "negativeText": { + "description": "Ooops! We apologize for the inconvenience, please contact us 😅", + "message": "Ooops! We apologize for the inconvenience, please contact us 😅" + }, + "positiveText": { + "description": "Thank you! Please rate our extension here 😍", + "message": "Thank you! Please rate our extension here 😍" + }, + "reviewText": { + "description": "Do you like this extension?", + "message": "Do you like this extension?" + }, + "toggleText": { + "description": "Eating dialogs in ", + "message": "Eating dialogs in " } } diff --git a/_locales/es/messages.json b/_locales/es/messages.json index 0270842..0846c73 100644 --- a/_locales/es/messages.json +++ b/_locales/es/messages.json @@ -2,5 +2,33 @@ "appDesc": { "description": "¿Alguien dijo diálogos de consentimiento de cookies? 😋", "message": "¿Alguien dijo diálogos de consentimiento de cookies? 😋" + }, + "contextMenuText": { + "description": "Reportar sitio...", + "message": "Reportar sitio..." + }, + "footerText": { + "description": "Hecho con ❤️ por", + "message": "Hecho con ❤️ por" + }, + "helpText": { + "description": "¿Ayuda o problemas?", + "message": "¿Ayuda o problemas?" + }, + "negativeText": { + "description": "¡Vaya! Sentimos lo ocurrido, por favor contacta con nosotros 😅", + "message": "¡Vaya! Sentimos lo ocurrido, por favor contacta con nosotros 😅" + }, + "positiveText": { + "description": "¡Gracias! Por favor valora la extensión aquí 😍", + "message": "¡Gracias! Por favor valora la extensión aquí 😍" + }, + "reviewText": { + "description": "¿Te gusta esta extensión?", + "message": "¿Te gusta esta extensión?" + }, + "toggleText": { + "description": "Comiendo diálogos en ", + "message": "Comiendo diálogos en " } } diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index 33ba6a2..26cc32c 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -2,5 +2,33 @@ "appDesc": { "description": "Quelqu'un a-t-il dit boîtes de dialogue de consentement aux cookies? 😋", "message": "Quelqu'un a-t-il dit boîtes de dialogue de consentement aux cookies? 😋" + }, + "contextMenuText": { + "description": "Signaler le site...", + "message": "Signaler le site..." + }, + "footerText": { + "description": "Fabriqué avec ❤️ par", + "message": "Fabriqué avec ❤️ par" + }, + "helpText": { + "description": "Aide ou problèmes?", + "message": "Aide ou problèmes?" + }, + "negativeText": { + "description": "Oups! Nous nous excusons pour la gêne occasionnée, veuillez nous contacter 😅", + "message": "Oups! Nous nous excusons pour la gêne occasionnée, veuillez nous contacter 😅" + }, + "positiveText": { + "description": "Merci! Veuillez évaluer notre extension ici 😍", + "message": "Merci! Veuillez évaluer notre extension ici 😍" + }, + "reviewText": { + "description": "Aimez-vous cette extension?", + "message": "Aimez-vous cette extension?" + }, + "toggleText": { + "description": "Manger des dialogues dans ", + "message": "Manger des dialogues dans " } } diff --git a/_locales/it/messages.json b/_locales/it/messages.json index 387ca6d..b18b8ac 100644 --- a/_locales/it/messages.json +++ b/_locales/it/messages.json @@ -2,5 +2,33 @@ "appDesc": { "description": "Qualcuno ha detto finestre di dialogo per il consenso ai cookie? 😋", "message": "Qualcuno ha detto finestre di dialogo per il consenso ai cookie? 😋" + }, + "contextMenuText": { + "description": "Segnala sito...", + "message": "Segnala sito..." + }, + "footerText": { + "description": "Realizzato con ❤️ da", + "message": "Realizzato con ❤️ da" + }, + "helpText": { + "description": "Aiuto o problemi?", + "message": "Aiuto o problemi?" + }, + "negativeText": { + "description": "Ops! Ci scusiamo per l'inconveniente, per favore contattaci 😅", + "message": "Ops! Ci scusiamo per l'inconveniente, per favore contattaci 😅" + }, + "positiveText": { + "description": "Grazie! Valuta la nostra estensione qui 😍", + "message": "Grazie! Valuta la nostra estensione qui 😍" + }, + "reviewText": { + "description": "Ti piace questa estensione?", + "message": "Ti piace questa estensione?" + }, + "toggleText": { + "description": "Mangiare dialoghi in ", + "message": "Mangiare dialoghi in " } } diff --git a/_locales/pt_BR/messages.json b/_locales/pt_BR/messages.json index 1d6f3fe..3ccfd07 100644 --- a/_locales/pt_BR/messages.json +++ b/_locales/pt_BR/messages.json @@ -2,5 +2,33 @@ "appDesc": { "description": "Alguém disse diálogos de consentimento de cookies? 😋", "message": "Alguém disse diálogos de consentimento de cookies? 😋" + }, + "contextMenuText": { + "description": "Reportar site...", + "message": "Reportar site..." + }, + "footerText": { + "description": "Feito com ❤️ por", + "message": "Feito com ❤️ por" + }, + "helpText": { + "description": "Ajuda ou problemas?", + "message": "Ajuda ou problemas?" + }, + "negativeText": { + "description": "Opa! Pedimos desculpas pelo transtorno, entre em contato conosco 😅", + "message": "Opa! Pedimos desculpas pelo transtorno, entre em contato conosco 😅" + }, + "positiveText": { + "description": "Obrigado! Avalie nossa extensão aqui 😍", + "message": "Obrigado! Avalie nossa extensão aqui 😍" + }, + "reviewText": { + "description": "Você gosta desta extensão?", + "message": "Você gosta desta extensão?" + }, + "toggleText": { + "description": "Comer diálogos em ", + "message": "Comer diálogos em " } } diff --git a/_locales/pt_PT/messages.json b/_locales/pt_PT/messages.json index 1d6f3fe..3ccfd07 100644 --- a/_locales/pt_PT/messages.json +++ b/_locales/pt_PT/messages.json @@ -2,5 +2,33 @@ "appDesc": { "description": "Alguém disse diálogos de consentimento de cookies? 😋", "message": "Alguém disse diálogos de consentimento de cookies? 😋" + }, + "contextMenuText": { + "description": "Reportar site...", + "message": "Reportar site..." + }, + "footerText": { + "description": "Feito com ❤️ por", + "message": "Feito com ❤️ por" + }, + "helpText": { + "description": "Ajuda ou problemas?", + "message": "Ajuda ou problemas?" + }, + "negativeText": { + "description": "Opa! Pedimos desculpas pelo transtorno, entre em contato conosco 😅", + "message": "Opa! Pedimos desculpas pelo transtorno, entre em contato conosco 😅" + }, + "positiveText": { + "description": "Obrigado! Avalie nossa extensão aqui 😍", + "message": "Obrigado! Avalie nossa extensão aqui 😍" + }, + "reviewText": { + "description": "Você gosta desta extensão?", + "message": "Você gosta desta extensão?" + }, + "toggleText": { + "description": "Comer diálogos em ", + "message": "Comer diálogos em " } } diff --git a/_locales/ro/messages.json b/_locales/ro/messages.json index 8e46380..ca7797b 100644 --- a/_locales/ro/messages.json +++ b/_locales/ro/messages.json @@ -2,5 +2,33 @@ "appDesc": { "description": "A spus cineva dialoguri de consimțământ pentru cookie? 😋", "message": "A spus cineva dialoguri de consimțământ pentru cookie? 😋" + }, + "contextMenuText": { + "description": "Raportați site-ul...", + "message": "Raportați site-ul..." + }, + "footerText": { + "description": "Realizat cu ❤️ de", + "message": "Realizat cu ❤️ de" + }, + "helpText": { + "description": "Ajutor sau probleme?", + "message": "Ajutor sau probleme?" + }, + "negativeText": { + "description": "Hopa! Ne cerem scuze pentru inconvenient, vă rugăm să ne contactați-ne 😅", + "message": "Hopa! Ne cerem scuze pentru inconvenient, vă rugăm să ne contactați-ne 😅" + }, + "positiveText": { + "description": "Mulțumesc! Vă rugăm să evaluați extensia noastră aici 😍", + "message": "Mulțumesc! Vă rugăm să evaluați extensia noastră aici 😍" + }, + "reviewText": { + "description": "Îți place această extensie?", + "message": "Îți place această extensie?" + }, + "toggleText": { + "description": "Mâncând dialoguri în ", + "message": "Mâncând dialoguri în " } } diff --git a/_locales/ru/messages.json b/_locales/ru/messages.json index 798c46e..920b3e9 100644 --- a/_locales/ru/messages.json +++ b/_locales/ru/messages.json @@ -2,5 +2,33 @@ "appDesc": { "description": "Кто-то сказал диалоги согласия на использование файлов cookie? 😋", "message": "Кто-то сказал диалоги согласия на использование файлов cookie? 😋" + }, + "contextMenuText": { + "description": "Сообщить о сайте...", + "message": "Сообщить о сайте..." + }, + "footerText": { + "description": "Сделано с ❤️", + "message": "Сделано с ❤️" + }, + "helpText": { + "description": "Помощь или проблемы?", + "message": "Помощь или проблемы?" + }, + "negativeText": { + "description": "Ой! Приносим извинения за неудобства, пожалуйста, свяжитесь с нами 😅", + "message": "Ой! Приносим извинения за неудобства, пожалуйста, свяжитесь с нами 😅" + }, + "positiveText": { + "description": "Спасибо! Пожалуйста, оцените наше расширение здесь 😍", + "message": "Спасибо! Пожалуйста, оцените наше расширение здесь 😍" + }, + "reviewText": { + "description": "Вам нравится это расширение?", + "message": "Вам нравится это расширение?" + }, + "toggleText": { + "description": "Есть диалоги в ", + "message": "Есть диалоги в " } } diff --git a/manifest.json b/manifest.json index c29ed63..d4f1816 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Cookie Dialog Monster", - "version": "5.3.3", + "version": "5.4.0", "default_locale": "en", "description": "__MSG_appDesc__", "icons": { diff --git a/popup.html b/popup.html index 536b87b..8d55fa9 100644 --- a/popup.html +++ b/popup.html @@ -11,7 +11,7 @@

Cookie Dialog Monster

- -
- - + +
- Help or issues? +
- Made with
❤️ by +
wanhose diff --git a/scripts/background.js b/scripts/background.js index 947fc9e..c359253 100644 --- a/scripts/background.js +++ b/scripts/background.js @@ -149,6 +149,30 @@ const getTab = (callback) => { }); }; +/** + * @description Reports active tab URL + */ + +const report = () => { + chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { + const tab = tabs[0]; + + if (tab) { + fetch("https://cdm-report-service.herokuapp.com/rest/v1/report/", { + body: JSON.stringify({ + text: tab.url, + to: "wanhose.development@gmail.com", + subject: "Cookie Dialog Monster Report", + }), + headers: { + "Content-type": "application/json", + }, + method: "POST", + }); + } + }); +}; + /** * @description Update cache state * @param {string} [hostname] @@ -159,6 +183,8 @@ const updateCache = (hostname, state) => { chrome.storage.local.get(null, (cache) => { const current = cache[hostname]; + if (!state.enabled) report(); + chrome.storage.local.set({ [hostname]: { enabled: @@ -227,35 +253,14 @@ chrome.runtime.onMessage.addListener((request, sender, callback) => { chrome.contextMenus.create({ contexts: ["all"], id: contextMenuId, - title: "Report site...", + title: chrome.i18n.getMessage("contextMenuText"), }); /** * @description Listens to context menus */ -chrome.contextMenus.onClicked.addListener((info, tab) => { +chrome.contextMenus.onClicked.addListener((info) => { if (info.menuItemId !== contextMenuId) return; - - fetch("https://cdm-report-service.herokuapp.com/rest/v1/report/", { - body: JSON.stringify({ - text: tab.url, - to: "wanhose.development@gmail.com", - subject: "Cookie Dialog Monster Report", - }), - headers: { - "Content-type": "application/json", - }, - method: "POST", - }); -}); - -/** - * @description Listens to updates - */ - -chrome.runtime.onInstalled.addListener(({ reason }) => { - if (reason === chrome.runtime.OnInstalledReason.UPDATE) { - chrome.storage.local.clear(); - } + report(); }); diff --git a/scripts/content.js b/scripts/content.js index 248567b..6879f90 100644 --- a/scripts/content.js +++ b/scripts/content.js @@ -43,15 +43,31 @@ let selectors = ""; const target = document.body || document.documentElement; +/** + * @description Checks if node element is removable + * @param {Element} node + */ + +const check = (node) => + node instanceof HTMLElement && + node.parentElement && + !["APP", "ROOT"].includes(node.id.toUpperCase()) && + !["BODY", "HTML"].includes(node.tagName); + /** * @description Cleans DOM */ const clean = () => { if (selectors.length) { - const results = document.querySelectorAll(selectors); + const nodes = document.querySelectorAll(selectors); - for (let i = results.length; i--; ) results[i].outerHTML = ""; + for (let i = nodes.length; i--; ) { + const node = nodes[i]; + const valid = check(node); + + if (valid) node.outerHTML = ""; + } } }; @@ -71,8 +87,10 @@ const fix = () => { if (automobiel && body) { for (let i = body.childNodes.length; i--; ) { const node = body.childNodes[i]; - if (node instanceof HTMLElement) + + if (node instanceof HTMLElement) { node.style.setProperty("filter", "initial", "important"); + } } } @@ -88,7 +106,10 @@ const fix = () => { if (google) { const submit = google.querySelector("button"); - if (submit) submit.click(); + + if (submit && submit instanceof HTMLElement) { + submit.click(); + } } if (html) { @@ -98,13 +119,19 @@ const fix = () => { } if (play) { - const element = document.querySelector("body > div"); - if (element) element.style.setProperty("z-index", "initial", "important"); + const node = document.querySelector("body > div"); + + if (node && node instanceof HTMLElement) { + node.style.setProperty("z-index", "initial", "important"); + } } if (yahoo) { const submit = yahoo.querySelector('button[type="submit"]'); - if (submit) submit.click(); + + if (submit && submit instanceof HTMLElement) { + submit.click(); + } } }; @@ -118,14 +145,9 @@ const observer = new MutationObserver((mutations, instance) => { for (let j = mutation.addedNodes.length; j--; ) { const node = mutation.addedNodes[j]; - const valid = - node instanceof HTMLElement && - node.parentElement && - !["BODY", "HTML"].includes(node.tagName); + const valid = check(node); - if (!valid) continue; - - if (node.matches(selectors)) node.outerHTML = ""; + if (valid && node.matches(selectors)) node.outerHTML = ""; } } } @@ -155,6 +177,7 @@ const setupSelectors = () => /** * @description Listens DOM complete state + * @listens document#readystatechange */ document.addEventListener("readystatechange", () => { diff --git a/scripts/popup.js b/scripts/popup.js index a77a6bd..e3be6ff 100644 --- a/scripts/popup.js +++ b/scripts/popup.js @@ -94,8 +94,10 @@ const handleRate = (event) => { */ const handleContentLoaded = () => { - dispatch({ type: "GET_TAB" }, null, ({ hostname, id }) => { + dispatch({ type: "GET_TAB" }, null, ({ hostname }) => { dispatch({ hostname, type: "GET_CACHE" }, null, ({ enabled }) => { + translate(); + const host = document.getElementById("host"); const like = document.getElementById("like"); const power = document.getElementById("power"); @@ -114,6 +116,21 @@ const handleContentLoaded = () => { }); }; +/** + * @description Applies translations to tags with i18n data attribute + */ + +const translate = () => { + const nodes = document.querySelectorAll("[data-i18n]"); + + for (let i = nodes.length; i--; ) { + const node = nodes[i]; + const { i18n } = node.dataset; + + node.innerHTML = chrome.i18n.getMessage(i18n); + } +}; + /** * @description Listen to document ready * @listens document#ready