From db6d007df6addcbd6746d3712ba1f44c4771ccfa Mon Sep 17 00:00:00 2001 From: Hamza Date: Mon, 21 Jul 2025 12:52:50 +0200 Subject: [PATCH] feat(chrome): migrate to manifest v3 Signed-off-by: Hamza --- Readme.md | 2 +- background.js | 35 +++++++++++++++--------- icon.svg | 73 -------------------------------------------------- icon128.png | Bin 0 -> 2603 bytes icon16.png | Bin 0 -> 314 bytes icon32.png | Bin 0 -> 576 bytes icon48.png | Bin 0 -> 836 bytes manifest.json | 23 ++++++++-------- 8 files changed, 35 insertions(+), 98 deletions(-) delete mode 100644 icon.svg create mode 100644 icon128.png create mode 100644 icon16.png create mode 100644 icon32.png create mode 100644 icon48.png diff --git a/Readme.md b/Readme.md index f9456cb..b8e2769 100644 --- a/Readme.md +++ b/Readme.md @@ -1,6 +1,6 @@ # 🔀 Random GitHub Notification -**Firefox add-on which adds a toolbar button to open a random GitHub notification of yours!** +**Chrome extension which adds a toolbar button to open a random GitHub notification of yours!** Very useful to catch up and work through notifications – with the excitement of randomness. diff --git a/background.js b/background.js index 7b90088..727c75f 100644 --- a/background.js +++ b/background.js @@ -1,20 +1,29 @@ -chrome.browserAction.onClicked.addListener(() => { - chrome.tabs.query({ url: "https://github.com/notifications*" }, (tabs) => { +chrome.action.onClicked.addListener(async (tab) => { + try { + const tabs = await chrome.tabs.query({ url: "https://github.com/notifications*" }); + if (tabs.length > 0) { - const tab = tabs[0]; - chrome.tabs.update(tab.id, { active: true }); - chrome.tabs.executeScript(tab.id, { code: `(${startNotificationRandomizer.toString()})()` }); + const notificationTab = tabs[0]; + await chrome.tabs.update(notificationTab.id, { active: true }); + await chrome.scripting.executeScript({ + target: { tabId: notificationTab.id }, + func: startNotificationRandomizer + }); } else { - chrome.tabs.create({ url: "https://github.com/notifications" }, (newTab) => { - chrome.tabs.onUpdated.addListener(function listener(tabId, changeInfo) { - if (tabId === newTab.id && changeInfo.status === 'complete') { - chrome.tabs.onUpdated.removeListener(listener); - chrome.tabs.executeScript(tabId, { code: `(${startNotificationRandomizer.toString()})()` }); - } - }); + const newTab = await chrome.tabs.create({ url: "https://github.com/notifications" }); + chrome.tabs.onUpdated.addListener(function listener(tabId, changeInfo) { + if (tabId === newTab.id && changeInfo.status === 'complete') { + chrome.tabs.onUpdated.removeListener(listener); + chrome.scripting.executeScript({ + target: { tabId: tabId }, + func: startNotificationRandomizer + }); + } }); } - }); + } catch (error) { + console.error('Error in extension:', error); + } }); function startNotificationRandomizer() { diff --git a/icon.svg b/icon.svg deleted file mode 100644 index 5268176..0000000 --- a/icon.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/icon128.png b/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..14b68cc6885f579af262ebae628d43697675e669 GIT binary patch literal 2603 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 N002ovPDHLkV1jHRek1?@ literal 0 HcmV?d00001 diff --git a/icon16.png b/icon16.png new file mode 100644 index 0000000000000000000000000000000000000000..a0385335a8c951279b35bcd2e647f9885cca3230 GIT binary patch literal 314 zcmV-A0mc4_P)Px#^hrcPR5(v{lK~ckFbG5OWX_WfPc}W-W*A{_i3UcQSHfWmIzf7hDH5Z-vjniQ&-h{)e@L~p(IpX$urMd$kKmzs_AU#l<=~c!C z0Hl?qlm^L22d1Gf0AdPE2}?tP0)`r^kx~^N_Vpm8aq>*Vkn_;KO_L2}qzbr<@0E>0 z74FVbbLt0}n(6QKj4Pn-#C#X(BC*LD1y$;5<)-UU^Wpl!#O_Le0Ce@8k=OLbA^-pY M07*qoM6N<$g0paj8vpAxPx$`bk7VR9HvFS6gz!FbK3ymilBRC#!R^Hmecp3WJ22%v3*V8X1Qa1%z;uW+@N2~k688^;a*bqi8P%xH+RH5N>%lvP4Uh@#*M zKxIKhlb7UpGTMIu)GlT*@M)FayAV1&K{T#}FkP?)6;dpjXFfMm|f1B-yb^B?vVy2*J05d~>{rv~c7-%pPVjm;` O0000Px%{z*hZRA@uhnOkzgFbqXuWi2bKSy^FaE%L-3S=Qq!F@@%@DJbC^VR~QW!VDkVa>MO5{SAI=^H!;3B&V=v) zeqQNzWo;Eg1@Nj(DdoK71vRY|@}j2Jdcn^_^W` z1Ms9{Rt1U*I_r4PMpcg#z@sqy10=3n5mw|(1n_92gOnsdl(_EzKyy>KyZ-@rpBx-E z7BmX9p4MqWJGvt|05a#S1fXbZMS&7M>ik_s93Ya9wiqpRN5^4j?=ZX@92#pBDgY8T znf=CZ)ChsYVE-+U$Ygd3U}_@4BHS3-bwv$t>Ipy;>KZKqk^a5<-?oL^$ojm~L;5P7Q=hNOKP2&@{m6X_O?Q zbzsE!K2m3=(aBrr_$;5(#%ZATx7VoCC?ccwf^=hwK*406){k~%^%&e4#twsklj^{) z?#Q;%B?l;Us%)SXTK6LcJCdQ~N53a