fix(core): transform workspace db when enable cloud (#7744)

This commit is contained in:
EYHN
2024-08-05 15:17:19 +00:00
parent a03831f2a2
commit cd4e462d8c
10 changed files with 110 additions and 20 deletions
@@ -11,6 +11,7 @@ import {
ApplicationStarted,
type BlobStorage,
catchErrorInto,
type DocStorage,
exhaustMapSwitchUntilChanged,
fromPromise,
type GlobalState,
@@ -77,11 +78,10 @@ export class CloudWorkspaceFlavourProviderService
async createWorkspace(
initial: (
docCollection: DocCollection,
blobStorage: BlobStorage
blobStorage: BlobStorage,
docStorage: DocStorage
) => Promise<void>
): Promise<WorkspaceMetadata> {
const tempId = nanoid();
// create workspace on cloud, get workspace id
const {
createWorkspace: { id: workspaceId },
@@ -94,7 +94,7 @@ export class CloudWorkspaceFlavourProviderService
const docStorage = this.storageProvider.getDocStorage(workspaceId);
const docCollection = new DocCollection({
id: tempId,
id: workspaceId,
idGenerator: () => nanoid(),
schema: globalBlockSuiteSchema,
blobSources: {
@@ -103,7 +103,7 @@ export class CloudWorkspaceFlavourProviderService
});
// apply initial state
await initial(docCollection, blobStorage);
await initial(docCollection, blobStorage, docStorage);
// save workspace to local storage, should be vary fast
await docStorage.doc.set(
@@ -3,6 +3,7 @@ import { WorkspaceFlavour } from '@affine/env/workspace';
import { DocCollection } from '@blocksuite/store';
import type {
BlobStorage,
DocStorage,
WorkspaceEngineProvider,
WorkspaceFlavourProvider,
WorkspaceMetadata,
@@ -56,7 +57,8 @@ export class LocalWorkspaceFlavourProvider
async createWorkspace(
initial: (
docCollection: DocCollection,
blobStorage: BlobStorage
blobStorage: BlobStorage,
docStorage: DocStorage
) => Promise<void>
): Promise<WorkspaceMetadata> {
const id = nanoid();
@@ -73,7 +75,7 @@ export class LocalWorkspaceFlavourProvider
});
// apply initial state
await initial(docCollection, blobStorage);
await initial(docCollection, blobStorage, docStorage);
// save workspace to local storage, should be vary fast
await docStorage.doc.set(id, encodeStateAsUpdate(docCollection.doc));