From 32493d8f46bef9d7b76aa43eb4a9dfd407c18226 Mon Sep 17 00:00:00 2001 From: Ioan Moldovan Date: Wed, 30 Jul 2025 21:10:45 -0300 Subject: [PATCH 1/2] fix: alarm issue and service worker window issue --- extension/js/common/browser/browser-msg.ts | 14 ++++++++++++++ extension/js/common/core/common.ts | 4 +++- extension/js/service_worker/background.ts | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/extension/js/common/browser/browser-msg.ts b/extension/js/common/browser/browser-msg.ts index 15ffca67143..4e2b9673e2f 100644 --- a/extension/js/common/browser/browser-msg.ts +++ b/extension/js/common/browser/browser-msg.ts @@ -449,6 +449,20 @@ export class BrowserMsg { BrowserMsg.HANDLERS_REGISTERED_BACKGROUND[name] = handler; } + public static async guardAlarmFlood() { + const MAX_ALARMS = 500; // Chrome’s hard cap + const CLEAR_THRESHOLD = 100; // when to reset down before hitting limits + + // 2) Check current alarms + const existing = await chrome.alarms.getAll(); + + // 3) If we’re within CLEAR_THRESHOLD of the cap, wipe them out + if (existing.length >= MAX_ALARMS - CLEAR_THRESHOLD) { + console.warn(`Alarms at ${existing.length}; recycling…`); + await chrome.alarms.clearAll(); + } + } + public static async createIntervalAlarm(action: string, periodInMinutes: number) { const alarmName = `${action}_interval`; diff --git a/extension/js/common/core/common.ts b/extension/js/common/core/common.ts index 5bd479a712d..6601cdd90ee 100644 --- a/extension/js/common/core/common.ts +++ b/extension/js/common/core/common.ts @@ -406,7 +406,9 @@ export class Url { * todo - the camelCase or snake_case functionality can now be removed */ public static parse = (expectedKeys: string[], parseThisUrl?: string) => { - const url = parseThisUrl || window.location.search.replace('?', ''); + const replacedLocation = typeof window !== 'undefined' ? window.location.search.replace('?', '') : 'https://service-worker.context'; // Placeholder URL when running in a service‐worker context + + const url = parseThisUrl ?? replacedLocation; const valuePairs = url.split('?').pop()?.split('&') ?? []; // str.split('?') string[].length will always be >= 1 const rawParams = new Map(); diff --git a/extension/js/service_worker/background.ts b/extension/js/service_worker/background.ts index 0ecf489c014..21fbc906560 100644 --- a/extension/js/service_worker/background.ts +++ b/extension/js/service_worker/background.ts @@ -22,6 +22,7 @@ console.info('background.js service worker starting'); let db: IDBDatabase; let storage: GlobalStoreDict; const inMemoryStore = new ExpirationCache('in_memory_store', 4 * 60 * 60 * 1000); // 4 hours + await BrowserMsg.guardAlarmFlood(); await BrowserMsg.createIntervalAlarm('delete_expired', 1); // each minute try { From 7b41f0d890fed8d393bebc7b5247ce98dbab6f9d Mon Sep 17 00:00:00 2001 From: Ioan Moldovan Date: Mon, 4 Aug 2025 09:57:38 -0300 Subject: [PATCH 2/2] fix: pr reviews --- extension/js/common/browser/browser-msg.ts | 14 -------------- extension/js/service_worker/background.ts | 2 +- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/extension/js/common/browser/browser-msg.ts b/extension/js/common/browser/browser-msg.ts index 4e2b9673e2f..15ffca67143 100644 --- a/extension/js/common/browser/browser-msg.ts +++ b/extension/js/common/browser/browser-msg.ts @@ -449,20 +449,6 @@ export class BrowserMsg { BrowserMsg.HANDLERS_REGISTERED_BACKGROUND[name] = handler; } - public static async guardAlarmFlood() { - const MAX_ALARMS = 500; // Chrome’s hard cap - const CLEAR_THRESHOLD = 100; // when to reset down before hitting limits - - // 2) Check current alarms - const existing = await chrome.alarms.getAll(); - - // 3) If we’re within CLEAR_THRESHOLD of the cap, wipe them out - if (existing.length >= MAX_ALARMS - CLEAR_THRESHOLD) { - console.warn(`Alarms at ${existing.length}; recycling…`); - await chrome.alarms.clearAll(); - } - } - public static async createIntervalAlarm(action: string, periodInMinutes: number) { const alarmName = `${action}_interval`; diff --git a/extension/js/service_worker/background.ts b/extension/js/service_worker/background.ts index 21fbc906560..fd8e9800d12 100644 --- a/extension/js/service_worker/background.ts +++ b/extension/js/service_worker/background.ts @@ -22,7 +22,7 @@ console.info('background.js service worker starting'); let db: IDBDatabase; let storage: GlobalStoreDict; const inMemoryStore = new ExpirationCache('in_memory_store', 4 * 60 * 60 * 1000); // 4 hours - await BrowserMsg.guardAlarmFlood(); + await chrome.alarms.clearAll(); await BrowserMsg.createIntervalAlarm('delete_expired', 1); // each minute try {