From b0d68dadcbb27560eefadf925ec6e4a91ca2d446 Mon Sep 17 00:00:00 2001 From: alt0 Date: Tue, 10 Jan 2023 11:55:50 +0800 Subject: [PATCH] refactor: optimize createWorkspaceInfo --- packages/data-center/src/datacenter.ts | 8 ++++---- .../data-center/src/provider/affine/affine.ts | 17 ++++++++++++++--- packages/data-center/src/provider/base.ts | 6 ++++-- .../src/provider/local/local.spec.ts | 3 ++- .../data-center/src/provider/local/local.ts | 16 ++++++++++++++++ 5 files changed, 40 insertions(+), 10 deletions(-) diff --git a/packages/data-center/src/datacenter.ts b/packages/data-center/src/datacenter.ts index a2cd19d29..8455737b5 100644 --- a/packages/data-center/src/datacenter.ts +++ b/packages/data-center/src/datacenter.ts @@ -89,11 +89,11 @@ export class DataCenter { 'There is no provider. You should add provider first.' ); - const workspaceId = await this._mainProvider.createWorkspaceId( + const workspaceInfo = await this._mainProvider.createWorkspaceInfo( workspaceMeta ); - const workspace = createBlocksuiteWorkspace(workspaceId); + const workspace = createBlocksuiteWorkspace(workspaceInfo.id); await this._mainProvider.createWorkspace(workspace, workspaceMeta); return workspace; @@ -292,11 +292,11 @@ export class DataCenter { const newProvider = this.providerMap.get(providerId); assert(newProvider, `provide '${providerId}' is not registered`); this._logger(`create ${providerId} workspace: `, workspaceInfo.name); - const newWorkspaceId = await newProvider.createWorkspaceId({ + const newWorkspaceInfo = await newProvider.createWorkspaceInfo({ name: workspaceInfo.name, avatar: workspaceInfo.avatar, }); - const newWorkspace = createBlocksuiteWorkspace(newWorkspaceId); + const newWorkspace = createBlocksuiteWorkspace(newWorkspaceInfo.id); // TODO optimize this function await newProvider.createWorkspace(newWorkspace, { name: workspaceInfo.name, diff --git a/packages/data-center/src/provider/affine/affine.ts b/packages/data-center/src/provider/affine/affine.ts index 9d717eb9e..b01766d90 100644 --- a/packages/data-center/src/provider/affine/affine.ts +++ b/packages/data-center/src/provider/affine/affine.ts @@ -263,13 +263,24 @@ export class AffineProvider extends BaseProvider { // return workspace; } - public override async createWorkspaceId( + public override async createWorkspaceInfo( meta: WorkspaceMeta - ): Promise { + ): Promise { const { id } = await this._apis.createWorkspace( meta as Required ); - return id; + + const workspaceInfo: WorkspaceInfo = { + name: meta.name, + id: id, + isPublish: false, + avatar: '', + owner: await this.getUserInfo(), + isLocal: true, + memberCount: 1, + provider: 'affine', + }; + return workspaceInfo; } public override async createWorkspace( diff --git a/packages/data-center/src/provider/base.ts b/packages/data-center/src/provider/base.ts index b7d46e5ab..f7a056110 100644 --- a/packages/data-center/src/provider/base.ts +++ b/packages/data-center/src/provider/base.ts @@ -28,8 +28,10 @@ export class BaseProvider { return; } - public async createWorkspaceId(meta: WorkspaceMeta): Promise { - return uuidv4(); + public async createWorkspaceInfo( + meta: WorkspaceMeta + ): Promise { + throw new Error(`provider: ${this.id} createWorkspaceInfo Not implemented`); } /** diff --git a/packages/data-center/src/provider/local/local.spec.ts b/packages/data-center/src/provider/local/local.spec.ts index 7188c2923..5d388470a 100644 --- a/packages/data-center/src/provider/local/local.spec.ts +++ b/packages/data-center/src/provider/local/local.spec.ts @@ -14,10 +14,11 @@ test.describe.serial('local provider', () => { let workspaceId: string | undefined; test('create workspace', async () => { - workspaceId = await provider.createWorkspaceId({ + const workspaceInfo = await provider.createWorkspaceInfo({ name: workspaceName, avatar: 'avatar-url-test', }); + workspaceId = workspaceInfo.id; const blocksuiteWorkspace = createBlocksuiteWorkspace(workspaceId); await provider.createWorkspace(blocksuiteWorkspace, { name: workspaceName, diff --git a/packages/data-center/src/provider/local/local.ts b/packages/data-center/src/provider/local/local.ts index c9444f3df..bf8aa3194 100644 --- a/packages/data-center/src/provider/local/local.ts +++ b/packages/data-center/src/provider/local/local.ts @@ -75,6 +75,22 @@ export class LocalProvider extends BaseProvider { this._storeWorkspaces(this._workspaces.list()); } + public override async createWorkspaceInfo( + meta: WorkspaceMeta + ): Promise { + const workspaceInfo: WorkspaceInfo = { + name: meta.name, + id: uuidv4(), + isPublish: false, + avatar: '', + owner: undefined, + isLocal: true, + memberCount: 1, + provider: 'local', + }; + return Promise.resolve(workspaceInfo); + } + public override async createWorkspace( blocksuiteWorkspace: BlocksuiteWorkspace, meta: WorkspaceMeta