wiki/apps/client/src/lib/local-page-data.ts
2026-10-13 23:25:07 +01:00

25 lines
802 B
TypeScript

// y-indexeddb names each database after the collab document, page.<pageId>
const PAGE_DATABASE_PREFIX = "page.";
export async function deleteLocalPageData(): Promise<void> {
try {
const databases = (await indexedDB.databases?.()) ?? [];
const pageDatabaseNames = databases
.map((database) => database.name)
.filter((name) => name?.startsWith(PAGE_DATABASE_PREFIX));
await Promise.all(
pageDatabaseNames.map(
(name) =>
new Promise<void>((resolve) => {
const request = indexedDB.deleteDatabase(name);
request.onsuccess = () => resolve();
request.onerror = () => resolve();
request.onblocked = () => resolve();
}),
),
);
} catch {
// local cleanup must never block logout
}
}