From 562d35d6dd5ef71718f286d8685277c639d68e3c Mon Sep 17 00:00:00 2001 From: Mitesh Shah Date: Thu, 6 Aug 2020 16:11:23 +0530 Subject: [PATCH] feat: permanently dismiss popup --- background.js | 2 +- contentscript.js | 30 +++++++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/background.js b/background.js index bf5f0c2..376ffb8 100644 --- a/background.js +++ b/background.js @@ -35,7 +35,7 @@ function onStartup(){ function getMatch(url){ var match = BETTER_ALTERNATIVES.find(pattern => url.match(new RegExp(pattern.urlPattern))); if(match && match.alternatives) - return match.alternatives; + return match; else return null; } diff --git a/contentscript.js b/contentscript.js index 58149b8..f2d69ea 100644 --- a/contentscript.js +++ b/contentscript.js @@ -53,8 +53,9 @@ function createRecommendedAlt(recommendedAlternative) { return recommendedAlt; } -function showBetter(alternatives) { - if(!alternatives) return; +function showBetter(match) { + if(!match || !match.alternatives) return; + let alternatives = match.alternatives; let betterdiv = document.createElement("div"); betterdiv.setAttribute("style", @@ -71,12 +72,35 @@ function showBetter(alternatives) { let dismissButton = document.createElement("button"); dismissButton.innerHTML = "✗ Dismiss suggestion for this URL"; dismissButton.setAttribute("style", "display: block; font-size: 14px; margin: 16px auto;"); + dismissButton.addEventListener("click", () => { + document.body.removeChild(betterdiv); + dismissPermanently(match); + }) + betterdiv.appendChild(dismissButton); document.body.appendChild(betterdiv); } +function dismissPermanently(match) { + let key = `dismiss@${match.urlPattern}` + chrome.storage.local.set({ + [key]: true, + }); +} + +function ifNotDissmissed(match, callback) { + let key = `dismiss@${match.urlPattern}` + chrome.storage.local.get(key, (item) => { + if (item && item[key]) { + return; + } else { + callback(match); + } + }) +} + chrome.runtime.sendMessage({type: 'getMatch', url: document.location.href}, (response) => { if (response) { - showBetter(response); + ifNotDissmissed(response, showBetter); } }); \ No newline at end of file