From 2573fbb24a6db2dd51ab9a0c62c2c40647a54970 Mon Sep 17 00:00:00 2001 From: "A.R-M" <20049946+ahmedrmusa@users.noreply.github.com> Date: Sun, 21 Jul 2024 00:49:00 -0400 Subject: [PATCH 1/2] add configurable selectors - implemented settings popup - notification for rejected popup - improved error handling --- content.js | 35 +++++++++++++++++++++++------------ icon128.png | Bin 0 -> 4536 bytes icon16.png | Bin 0 -> 555 bytes icon48.png | Bin 0 -> 1707 bytes popup.html | 22 ++++++++++++++++++++++ popup.js | 0 6 files changed, 45 insertions(+), 12 deletions(-) create mode 100644 icon128.png create mode 100644 icon16.png create mode 100644 icon48.png create mode 100644 popup.html create mode 100644 popup.js diff --git a/content.js b/content.js index a3387fe..060eaaa 100644 --- a/content.js +++ b/content.js @@ -1,17 +1,28 @@ -const selectors = [ - 'button[aria-label="reject"]', - 'button[data-testid="reject"]', - 'button[class*="reject"]', - ]; +chrome.storage.sync.get('selectors', (data) => { + const selectors = data.selectors || [ + 'button[aria-label="reject"]', + 'button[data-testid="reject"]', + 'button[class*="reject"]' + + // Add selectors as needed + ]; - function clickButton(selector) { - const button = document.querySelector(selector); - if (button) { - button.click(); + function clickButton(selector) { + try { + const button = document.querySelector(selector); + if (button) { + console.log(`Clicked button with selector: ${selector}`); + button.click(); + // Notify user + new Notification("Reject Cookies", { body: `Rejected cookies with selector: ${selector}` }); + } + } catch (error) { + console.error(`Error clicking button with selector: ${selector}`, error); + } } - } - selectors.forEach(selector => { - clickButton(selector); + selectors.forEach(selector => { + clickButton(selector); + }); }); \ No newline at end of file diff --git a/icon128.png b/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..df64851b9020679bf79e3a2c3ca62966512acf5b GIT binary patch literal 4536 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 QP6sc*#K2O&S{EDtKU8%;8UO$Q literal 0 HcmV?d00001 diff --git a/icon16.png b/icon16.png new file mode 100644 index 0000000000000000000000000000000000000000..b6568e53d090be24fcca6b44abd461e4c07624a2 GIT binary patch literal 555 zcmV+`0@VG9P)Y<8s-gkK?)QD0NlU9% zsoB>{sco|ALFYIO&pb2C0RI>)N_IM(@}AKH=K&ohxK90eQmfTmQSAr-NTTm9UrMTR z%X_;Zq6y_=K=e`2VW`vv@VE#N0l<>kG^B^Aw}!Ow0>qtNCDxK!e2hR#(A-~VNki|p z3#QatV@KX>#s&NAyfs~xT@GP+cE~^y30(#7h{TQUkox#|TYa1YH3~%wIr{TM-JR>5 zaKZX%x>ohRcg6)<9W()e)Z0Dh?UkAB-(f)J#{qn(*T=HS$@n?Ni-RTrP~IIq0MXy* zqwQSx+^-R$s7&BH0Jvb+L_Hf?2KsoiS$Ydmr z_X0@r5*D}AB+-T5Tc6p@!MO)_l7{Ye7wo;HXrR!pxL{wsx6^-uIOp~)h2GiXTkzJ{ zgxuP`=`>xdx?l@Mcf#Rr-8m8W0ZsvU2cQgK3cyQ&O+t4;&L`El_1kBX#4KBx6*Yrg t-|`%bNfNh7>Qk0YADozYLsIx3@e@N38uvY>co+Zx002ovPDHLkV1l+(|9t=e literal 0 HcmV?d00001 diff --git a/icon48.png b/icon48.png new file mode 100644 index 0000000000000000000000000000000000000000..c94ed1051e595057b41b49ab268664e093f07eb3 GIT binary patch literal 1707 zcmV;c22}ZpP))7GyE9wLqmS*}JzpuU&f zeL2w@OFT*}zRR3C(N`d`Lk$LhB%+(FC~BIuvW*MrW~T%@6b^^46^+%Jrj_Z2c}O!% zc7EBKxNIcqTaEZ}T{q|EG^b&naOTou=8HwsKt7tt>rf1H4S+_c$#!6BRn@4NcO=e| zd^nMdbX;%W4WPxDp5$Z`Gy97MzySfm*L~DgAc%3}#&r^7RVp3;0MFKAiG#YXt3@#( z0Eoxq)jfj#05Iz2s9l&jwd&ReB7WWV$^f{rE8yF8*XYp+PXTC#*#uxoY7iX<_?j1- z&~Tq$by(BPnfZ93V5U>D zhs;;J2BC(Obzt7(dNmUgj%tQ^Rx`}^asew^Mxx{$_H9xM7O=0fyL=4>IbmIXX6bo&1tNnT#!k;;@W3& zGEw(XCS*7dC7q&rpppp#PxjOG)YYqMkCz~lKwW=(8#oRCf4f}jJ%udlC9#R6X|7gt zE^hRs^CTpCsJ}_;>Zl9AzJ9vCO!s*Pf`ECh9O>7g0~zz7-sj$rv!yE_Hvni#r@~19 zO6QGOrHjRHV6xxC1oT8;Q~ z1o|+&(L_9?M1~}BZEbA_fW5sVc>xd6@w-`!vJaNQ9S=m6roJ&4dGz;G@jaU&)d3 z<(i6$_Dh#8`Kh!t7_g;~fS3W`VE~T|CQ13)uxWkr~mJy|; z6|vW literal 0 HcmV?d00001 diff --git a/popup.html b/popup.html new file mode 100644 index 0000000..5214f4d --- /dev/null +++ b/popup.html @@ -0,0 +1,22 @@ + + + + Reject Cookies Settings + + + +
+

Reject Cookies Settings

+

Enter selectors to reject cookies, one per line:

+ + +

+
+ + + diff --git a/popup.js b/popup.js new file mode 100644 index 0000000..e69de29 From 125e38466918c3c6f879d8a407e9987f2675ccef Mon Sep 17 00:00:00 2001 From: "A.R-M" <20049946+ahmedrmusa@users.noreply.github.com> Date: Sun, 21 Jul 2024 00:58:16 -0400 Subject: [PATCH 2/2] fix image path and popup window --- background.js | 4 ++ content.js | 2 - icon128.png => images/icon128.png | Bin icon16.png => images/icon16.png | Bin icon48.png => images/icon48.png | Bin manifest.json | 12 +++++- popup.html | 68 +++++++++++++++++++++++++++--- popup.js | 38 +++++++++++++++++ 8 files changed, 114 insertions(+), 10 deletions(-) rename icon128.png => images/icon128.png (100%) rename icon16.png => images/icon16.png (100%) rename icon48.png => images/icon48.png (100%) diff --git a/background.js b/background.js index e69de29..9fa68db 100644 --- a/background.js +++ b/background.js @@ -0,0 +1,4 @@ +chrome.runtime.onInstalled.addListener(() => { + console.log("Reject Cookies extension installed."); + }); + \ No newline at end of file diff --git a/content.js b/content.js index 060eaaa..5510aaa 100644 --- a/content.js +++ b/content.js @@ -3,8 +3,6 @@ chrome.storage.sync.get('selectors', (data) => { 'button[aria-label="reject"]', 'button[data-testid="reject"]', 'button[class*="reject"]' - - // Add selectors as needed ]; function clickButton(selector) { diff --git a/icon128.png b/images/icon128.png similarity index 100% rename from icon128.png rename to images/icon128.png diff --git a/icon16.png b/images/icon16.png similarity index 100% rename from icon16.png rename to images/icon16.png diff --git a/icon48.png b/images/icon48.png similarity index 100% rename from icon48.png rename to images/icon48.png diff --git a/manifest.json b/manifest.json index 456f0de..fe3c5ce 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "name": "Reject Cookies", "version": "1.0", "description": "Automatically reject all cookie popups.", - "permissions": ["activeTab", "scripting"], + "permissions": ["activeTab", "storage", "scripting"], "background": { "service_worker": "background.js" }, @@ -13,6 +13,14 @@ "js": ["content.js"], "run_at": "document_end" } - ] + ], + "action": { + "default_popup": "popup.html", + "default_icon": { + "16": "images/icon16.png", + "48": "images/icon48.png", + "128": "images/icon128.png" + } + } } \ No newline at end of file diff --git a/popup.html b/popup.html index 5214f4d..77e727f 100644 --- a/popup.html +++ b/popup.html @@ -3,19 +3,75 @@ Reject Cookies Settings

Reject Cookies Settings

-

Enter selectors to reject cookies, one per line:

+

+ Enter CSS selectors for cookie rejection buttons. One per line. +
For example: button[aria-label="reject"] +

-

+

+
+

Current Selectors:

+
    +
    diff --git a/popup.js b/popup.js index e69de29..252b23e 100644 --- a/popup.js +++ b/popup.js @@ -0,0 +1,38 @@ +document.addEventListener('DOMContentLoaded', () => { + const textarea = document.getElementById('selectors'); + const saveButton = document.getElementById('save'); + const status = document.getElementById('status'); + const selectorsList = document.getElementById('selectors-list'); + + // Load existing selectors + chrome.storage.sync.get('selectors', (data) => { + const selectors = data.selectors || []; + textarea.value = selectors.join('\n'); + updateSelectorsList(selectors); + }); + + // Save button click event + saveButton.addEventListener('click', () => { + const selectors = textarea.value.split('\n').map(s => s.trim()).filter(s => s.length > 0); + + // Simple validation for selectors + if (selectors.length === 0) { + status.textContent = 'Please enter at least one selector.'; + status.style.color = 'red'; + return; + } + + chrome.storage.sync.set({ selectors: selectors }, () => { + status.textContent = 'Selectors saved!'; + status.style.color = '#28a745'; + updateSelectorsList(selectors); + setTimeout(() => status.textContent = '', 2000); + }); + }); + + // Update the list of selectors in the popup + function updateSelectorsList(selectors) { + selectorsList.innerHTML = selectors.map(selector => `
  • ${selector}
  • `).join(''); + } + }); + \ No newline at end of file