mirror of
https://github.com/outline/outline.git
synced 2025-12-30 15:30:12 -06:00
34 lines
973 B
TypeScript
34 lines
973 B
TypeScript
import flatten from "lodash/flatten";
|
|
import stores from "~/stores";
|
|
import { flattenTree } from "./tree";
|
|
|
|
/**
|
|
* Delete all databases in the browser.
|
|
*
|
|
* @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}`);
|
|
});
|
|
})
|
|
);
|
|
}
|