mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-21 20:16:26 +08:00
fix: local cache not work in creation (#859)
This commit is contained in:
@@ -17,7 +17,7 @@ const WORKSPACE_KEY = 'workspaces';
|
|||||||
|
|
||||||
export class LocalProvider extends BaseProvider {
|
export class LocalProvider extends BaseProvider {
|
||||||
public id = 'local';
|
public id = 'local';
|
||||||
private _idbMap: Map<string, IndexedDBProvider> = new Map();
|
private _idbMap: Map<BlocksuiteWorkspace, IndexedDBProvider> = new Map();
|
||||||
|
|
||||||
constructor(params: ProviderConstructorParams) {
|
constructor(params: ProviderConstructorParams) {
|
||||||
super(params);
|
super(params);
|
||||||
@@ -36,11 +36,11 @@ export class LocalProvider extends BaseProvider {
|
|||||||
|
|
||||||
public override async linkLocal(workspace: BlocksuiteWorkspace) {
|
public override async linkLocal(workspace: BlocksuiteWorkspace) {
|
||||||
assert(workspace.room);
|
assert(workspace.room);
|
||||||
let idb = this._idbMap.get(workspace.room);
|
let idb = this._idbMap.get(workspace);
|
||||||
if (!idb) {
|
if (!idb) {
|
||||||
idb = new IndexedDBProvider(workspace.room, workspace.doc);
|
idb = new IndexedDBProvider(workspace.room, workspace.doc);
|
||||||
}
|
}
|
||||||
this._idbMap.set(workspace.room, idb);
|
this._idbMap.set(workspace, idb);
|
||||||
this._logger('Local data loaded');
|
this._logger('Local data loaded');
|
||||||
return workspace;
|
return workspace;
|
||||||
}
|
}
|
||||||
@@ -79,6 +79,9 @@ export class LocalProvider extends BaseProvider {
|
|||||||
IndexedDBProvider.delete(id);
|
IndexedDBProvider.delete(id);
|
||||||
this._workspaces.remove(id);
|
this._workspaces.remove(id);
|
||||||
this._storeWorkspaces(this._workspaces.list());
|
this._storeWorkspaces(this._workspaces.list());
|
||||||
|
if (workspace.blocksuiteWorkspace) {
|
||||||
|
this._idbMap.delete(workspace.blocksuiteWorkspace);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this._logger(`Failed to delete workspace ${id}`);
|
this._logger(`Failed to delete workspace ${id}`);
|
||||||
}
|
}
|
||||||
@@ -115,5 +118,6 @@ export class LocalProvider extends BaseProvider {
|
|||||||
workspaces.forEach(ws => IndexedDBProvider.delete(ws.id));
|
workspaces.forEach(ws => IndexedDBProvider.delete(ws.id));
|
||||||
this._storeWorkspaces([]);
|
this._storeWorkspaces([]);
|
||||||
this._workspaces.clear();
|
this._workspaces.clear();
|
||||||
|
this._idbMap.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user