From 285b535a54f6ae4e41370ed8f2f4e672ee593b47 Mon Sep 17 00:00:00 2001 From: zuomeng wang Date: Tue, 7 Feb 2023 16:52:55 +0800 Subject: [PATCH] fix: local cache not work in creation (#859) --- packages/data-center/src/provider/local/local.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/data-center/src/provider/local/local.ts b/packages/data-center/src/provider/local/local.ts index f9b819ea4..9a3726b8f 100644 --- a/packages/data-center/src/provider/local/local.ts +++ b/packages/data-center/src/provider/local/local.ts @@ -17,7 +17,7 @@ const WORKSPACE_KEY = 'workspaces'; export class LocalProvider extends BaseProvider { public id = 'local'; - private _idbMap: Map = new Map(); + private _idbMap: Map = new Map(); constructor(params: ProviderConstructorParams) { super(params); @@ -36,11 +36,11 @@ export class LocalProvider extends BaseProvider { public override async linkLocal(workspace: BlocksuiteWorkspace) { assert(workspace.room); - let idb = this._idbMap.get(workspace.room); + let idb = this._idbMap.get(workspace); if (!idb) { idb = new IndexedDBProvider(workspace.room, workspace.doc); } - this._idbMap.set(workspace.room, idb); + this._idbMap.set(workspace, idb); this._logger('Local data loaded'); return workspace; } @@ -79,6 +79,9 @@ export class LocalProvider extends BaseProvider { IndexedDBProvider.delete(id); this._workspaces.remove(id); this._storeWorkspaces(this._workspaces.list()); + if (workspace.blocksuiteWorkspace) { + this._idbMap.delete(workspace.blocksuiteWorkspace); + } } else { this._logger(`Failed to delete workspace ${id}`); } @@ -115,5 +118,6 @@ export class LocalProvider extends BaseProvider { workspaces.forEach(ws => IndexedDBProvider.delete(ws.id)); this._storeWorkspaces([]); this._workspaces.clear(); + this._idbMap.clear(); } }