fix(core): collections data migration without blocking data reads (#4866)
This commit is contained in:
@@ -101,7 +101,6 @@ export const pageCollectionBaseAtom =
|
|||||||
const migrateCollectionsFromIdbData = async (
|
const migrateCollectionsFromIdbData = async (
|
||||||
workspace: Workspace
|
workspace: Workspace
|
||||||
): Promise<Collection[]> => {
|
): Promise<Collection[]> => {
|
||||||
workspace.awarenessStore.awareness.emit('change log');
|
|
||||||
const localCRUD = get(localCollectionCRUDAtom);
|
const localCRUD = get(localCollectionCRUDAtom);
|
||||||
const collections = await getCollections(localCRUD);
|
const collections = await getCollections(localCRUD);
|
||||||
const result = collections.filter(v => v.workspaceId === workspace.id);
|
const result = collections.filter(v => v.workspaceId === workspace.id);
|
||||||
@@ -149,18 +148,17 @@ export const pageCollectionBaseAtom =
|
|||||||
return new Observable<BaseCollectionsDataType>(subscriber => {
|
return new Observable<BaseCollectionsDataType>(subscriber => {
|
||||||
const group = new DisposableGroup();
|
const group = new DisposableGroup();
|
||||||
currentWorkspacePromise.then(async currentWorkspace => {
|
currentWorkspacePromise.then(async currentWorkspace => {
|
||||||
const collectionsFromLocal =
|
|
||||||
await migrateCollectionsFromIdbData(currentWorkspace);
|
|
||||||
const collectionFromUserSetting =
|
|
||||||
await migrateCollectionsFromUserData(currentWorkspace);
|
|
||||||
const workspaceSetting = getWorkspaceSetting(currentWorkspace);
|
const workspaceSetting = getWorkspaceSetting(currentWorkspace);
|
||||||
if (collectionsFromLocal.length || collectionFromUserSetting.length) {
|
migrateCollectionsFromIdbData(currentWorkspace).then(collections => {
|
||||||
// migrate collections
|
if (collections.length) {
|
||||||
workspaceSetting.addCollection(
|
workspaceSetting.addCollection(...collections);
|
||||||
...collectionFromUserSetting,
|
|
||||||
...collectionsFromLocal
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
migrateCollectionsFromUserData(currentWorkspace).then(collections => {
|
||||||
|
if (collections.length) {
|
||||||
|
workspaceSetting.addCollection(...collections);
|
||||||
|
}
|
||||||
|
});
|
||||||
subscriber.next({
|
subscriber.next({
|
||||||
loading: false,
|
loading: false,
|
||||||
collections: workspaceSetting.collections,
|
collections: workspaceSetting.collections,
|
||||||
|
|||||||
Reference in New Issue
Block a user