aboutsummaryrefslogtreecommitdiffstats
path: root/tools/notif-faces-test.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-07 07:24:33 -0700
committerAdam Soltys <[email protected]>2026-10-07 07:24:33 -0700
commit78cf670939133fc4f656f0f42b21a59431a53842 (patch)
tree745ec53290fe37c91fb607e6013a322b887f9388 /tools/notif-faces-test.js
parent5bb7da55232c7a1debed2a505a85b5e7da5ba6db (diff)
downloadcoinosv3-78cf670939133fc4f656f0f42b21a59431a53842.tar.gz
coinosv3-78cf670939133fc4f656f0f42b21a59431a53842.zip
Rebuildable caches move from localStorage to IndexedDB (cache-store.js)
localStorage is ~5M characters per site whatever the device, and a phone had filled it. Profiles, faceless list, reports, follow packs, profile pages, relay lists, the moderation baseline, community directory, link previews, video sizes/probes and search profiles (~3M on that phone) now live in IndexedDB, which shares the site's disk allowance (GBs). cacheStorage keeps localStorage's string API: reads from memory, coalesced write-behind, flushed on hide. Copies migrate on open and are removed once written. Boot waits for it (max 3s) beside the Ark store; caches read at construction re-merge on ready; an early write can't replace the stored copy. A copy an older build writes to localStorage later moves in on first ask. Wallet wipes reach it; private mode stays on localStorage. Read markers, drafts, follows, note threads and sync outboxes stay in localStorage on purpose (cross-tab consistency, early server-rendered seeding). Also asks navigator.storage.persist(). Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'tools/notif-faces-test.js')
-rw-r--r--tools/notif-faces-test.js2
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/notif-faces-test.js b/tools/notif-faces-test.js
index 18a2f00..3093f51 100644
--- a/tools/notif-faces-test.js
+++ b/tools/notif-faces-test.js
@@ -87,7 +87,7 @@ try {
[...document.querySelectorAll('.app-nav-button.unread')].some((n) => /Notifications/i.test(n.getAttribute('aria-label') || ''))));
check('the actors\' profiles were asked for', (await page.evaluate(() => window.__profileReqs)) > 0);
check('...and their pictures fetched', faceHits.length >= 5, faceHits.length + ' of 5');
- const profs = await page.evaluate((k) => Object.keys(JSON.parse(localStorage.getItem(k + ':profiles') || '{}')).length, base);
+ const profs = await page.evaluate((k) => Object.keys(JSON.parse((window.coinosCache || localStorage).getItem(k + ':profiles') || '{}')).length, base);
check('...and remembered in the profile cache', profs >= 5, profs + ' profiles');
console.log('\n[opening the page]');