fix: Clear IndexedDB cache command on FF, closes #6821

This commit is contained in:
Tom Moor
2024-04-21 20:48:01 -04:00
parent 0c997bfd8c
commit 9855adcd3b

View File

@@ -1,10 +1,33 @@
// A function to delete all IndexedDB databases import flatten from "lodash/flatten";
export async function deleteAllDatabases() { import stores from "~/stores";
const databases = await window.indexedDB.databases(); import { flattenTree } from "./tree";
for (const database of databases) { /**
if (database.name) { * Delete all databases in the browser.
window.indexedDB.deleteDatabase(database.name); *
* @returns A promise that resolves when all databases have been deleted.
*/
export async function deleteAllDatabases() {
if ("databases" in window.indexedDB) {
const databases = await window.indexedDB.databases();
for (const database of databases) {
if (database.name) {
window.indexedDB.deleteDatabase(database.name);
}
} }
return;
} }
// If the browser does not support listing databases, we need to manually delete as best we can
// by iterating over all known collections and documents.
await Promise.all(
stores.collections.orderedData.map(async (collection) => {
const nodes = flatten(collection.documents?.map(flattenTree));
return nodes.map(async (node) => {
window.indexedDB.deleteDatabase(`document.${node.id}`);
});
})
);
} }