diff --git a/packages/frontend/apps/electron-renderer/src/app/setup.ts b/packages/frontend/apps/electron-renderer/src/app/setup.ts index 99d145d296..8c0efdd221 100644 --- a/packages/frontend/apps/electron-renderer/src/app/setup.ts +++ b/packages/frontend/apps/electron-renderer/src/app/setup.ts @@ -1,5 +1,6 @@ import '@affine/core/bootstrap/electron'; import '@affine/core/bootstrap/blocksuite'; +import '@affine/core/bootstrap/cleanup'; import '@affine/component/theme'; import './global.css'; diff --git a/packages/frontend/apps/ios/src/setup.ts b/packages/frontend/apps/ios/src/setup.ts index cc5cf55bad..037cf5c436 100644 --- a/packages/frontend/apps/ios/src/setup.ts +++ b/packages/frontend/apps/ios/src/setup.ts @@ -1,3 +1,4 @@ import '@affine/core/bootstrap/browser'; import '@affine/core/bootstrap/blocksuite'; +import '@affine/core/bootstrap/cleanup'; import './proxy'; diff --git a/packages/frontend/apps/mobile/src/setup.ts b/packages/frontend/apps/mobile/src/setup.ts index 64569a71e2..91115ee8c5 100644 --- a/packages/frontend/apps/mobile/src/setup.ts +++ b/packages/frontend/apps/mobile/src/setup.ts @@ -1,4 +1,5 @@ import '@affine/core/bootstrap/browser'; import '@affine/core/bootstrap/blocksuite'; +import '@affine/core/bootstrap/cleanup'; import '@affine/component/theme'; import '@affine/core/mobile/styles/mobile.css'; diff --git a/packages/frontend/apps/web/src/setup.ts b/packages/frontend/apps/web/src/setup.ts index 76e2660119..765f04e23d 100644 --- a/packages/frontend/apps/web/src/setup.ts +++ b/packages/frontend/apps/web/src/setup.ts @@ -1,3 +1,4 @@ import '@affine/core/bootstrap/browser'; import '@affine/core/bootstrap/blocksuite'; +import '@affine/core/bootstrap/cleanup'; import '@affine/component/theme'; diff --git a/packages/frontend/core/src/bootstrap/cleanup.ts b/packages/frontend/core/src/bootstrap/cleanup.ts new file mode 100644 index 0000000000..d97ab165f6 --- /dev/null +++ b/packages/frontend/core/src/bootstrap/cleanup.ts @@ -0,0 +1,28 @@ +function cleanupUnusedIndexedDB() { + const indexedDB = window.indexedDB; + if (!indexedDB) { + return; + } + + indexedDB.databases().then(databases => { + databases.forEach(database => { + if (database.name?.endsWith(':server-clock')) { + indexedDB.deleteDatabase(database.name); + } + if (database.name?.endsWith(':sync-metadata')) { + indexedDB.deleteDatabase(database.name); + } + if ( + database.name?.startsWith('idx:') && + (database.name.endsWith(':block') || database.name.endsWith(':doc')) + ) { + indexedDB.deleteDatabase(database.name); + } + if (database.name?.startsWith('jp:')) { + indexedDB.deleteDatabase(database.name); + } + }); + }); +} + +cleanupUnusedIndexedDB();