From 8b757f538e315ee93fb3ecd3acdf3c1cee5fa1da Mon Sep 17 00:00:00 2001 From: alt0 Date: Wed, 11 Jan 2023 20:20:48 +0800 Subject: [PATCH] feat: temporary support loading data for public workspace --- packages/data-center/src/datacenter.ts | 25 ++++++++++++++++++- .../data-center/src/provider/affine/affine.ts | 5 ++++ packages/data-center/src/provider/base.ts | 9 +++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/packages/data-center/src/datacenter.ts b/packages/data-center/src/datacenter.ts index d592d2f480..d59f090526 100644 --- a/packages/data-center/src/datacenter.ts +++ b/packages/data-center/src/datacenter.ts @@ -13,7 +13,7 @@ import assert from 'assert'; import { getLogger } from './logger'; import { createBlocksuiteWorkspace } from './utils/index.js'; import { MessageCenter } from './message'; -import type { WorkspaceUnit } from './workspace-unit'; +import { WorkspaceUnit } from './workspace-unit'; /** * @class DataCenter @@ -175,6 +175,29 @@ export class DataCenter { return workspaceUnit; } + public async loadPublicWorkspace(workspaceId: string) { + const workspaceUnit = this._workspaceUnitCollection.find(workspaceId); + assert(workspaceUnit, 'Workspace not found'); + const provider = this.providerMap.get(workspaceUnit.provider); + assert(provider); + const blocksuiteWorkspace = this._getBlocksuiteWorkspace(workspaceId); + await provider.loadPublicWorkspace(blocksuiteWorkspace); + + const workspaceUnitForPublic = new WorkspaceUnit({ + id: workspaceUnit.id, + name: workspaceUnit.name, + avatar: workspaceUnit.avatar, + owner: workspaceUnit.owner, + published: workspaceUnit.published, + provider: workspaceUnit.provider, + memberCount: workspaceUnit.memberCount, + syncMode: workspaceUnit.syncMode, + }); + + workspaceUnitForPublic.setBlocksuiteWorkspace(blocksuiteWorkspace); + return workspaceUnitForPublic; + } + /** * get user info by provider id * @param {string} providerId the provider name of workspace diff --git a/packages/data-center/src/provider/affine/affine.ts b/packages/data-center/src/provider/affine/affine.ts index 977edb557e..b0544b1bc7 100644 --- a/packages/data-center/src/provider/affine/affine.ts +++ b/packages/data-center/src/provider/affine/affine.ts @@ -116,6 +116,11 @@ export class AffineProvider extends BaseProvider { } } + override async loadPublicWorkspace(blocksuiteWorkspace: BlocksuiteWorkspace) { + await this._applyCloudUpdates(blocksuiteWorkspace); + return blocksuiteWorkspace; + } + override async warpWorkspace(workspace: BlocksuiteWorkspace) { await this._applyCloudUpdates(workspace); const { room } = workspace; diff --git a/packages/data-center/src/provider/base.ts b/packages/data-center/src/provider/base.ts index 17834abf34..fed8626811 100644 --- a/packages/data-center/src/provider/base.ts +++ b/packages/data-center/src/provider/base.ts @@ -75,6 +75,15 @@ export class BaseProvider { return workspace; } + /** + * @deprecated Temporary for public workspace + * @param blocksuiteWorkspace + * @returns + */ + public async loadPublicWorkspace(blocksuiteWorkspace: BlocksuiteWorkspace) { + return blocksuiteWorkspace; + } + /** * load workspaces **/