From 297a54572d41b8b3d480863eaf979d09143e3ee3 Mon Sep 17 00:00:00 2001 From: Aryaman Kumar Sharma Date: Fri, 7 Mar 2025 15:55:52 +0530 Subject: [PATCH] Fix: handle QuotaExceededError in localStorage operations --- .../src/lib/priority-queue/persisted.ts | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/packages/browser/src/lib/priority-queue/persisted.ts b/packages/browser/src/lib/priority-queue/persisted.ts index 99e82b025..57e06c050 100644 --- a/packages/browser/src/lib/priority-queue/persisted.ts +++ b/packages/browser/src/lib/priority-queue/persisted.ts @@ -34,7 +34,11 @@ function persistItems(key: string, items: Context[]): void { } }, {} as Record) - loc.setItem(key, JSON.stringify(Object.values(merged))) + try { + loc.setItem(key, JSON.stringify(Object.values(merged))) + } catch (err) { + console.error(err) + } } function seen(key: string): Record { @@ -45,13 +49,17 @@ function seen(key: string): Record { function persistSeen(key: string, memory: Record): void { const stored = seen(key) - loc.setItem( - key, - JSON.stringify({ - ...stored, - ...memory, - }) - ) + try { + loc.setItem( + key, + JSON.stringify({ + ...stored, + ...memory, + }) + ) + } catch (err) { + console.error(err) + } } function remove(key: string): void { @@ -70,9 +78,13 @@ function mutex(key: string, onUnlock: Function, attempt = 0): void { const allowed = lock === null || expired(lock) if (allowed) { - loc.setItem(lockKey, JSON.stringify(now() + lockTimeout)) - onUnlock() - loc.removeItem(lockKey) + try { + loc.setItem(lockKey, JSON.stringify(now() + lockTimeout)) + onUnlock() + loc.removeItem(lockKey) + } catch (err) { + console.error(err) + } return }