feat: temporary support loading data for public workspace

This commit is contained in:
alt0
2023-01-11 20:20:48 +08:00
parent 7e77175679
commit 8b757f538e
3 changed files with 38 additions and 1 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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
**/