Merge remote-tracking branch 'origin/feat/datacenter-dev' into feat/datacenter-dev

This commit is contained in:
alt0
2023-01-12 19:51:00 +08:00
7 changed files with 108 additions and 69 deletions
@@ -102,10 +102,19 @@ export class AffineProvider extends BaseProvider {
});
}
private _handlerAffineListMessage({ ws_details, metadata }: ChannelMessage) {
private async _handlerAffineListMessage({
ws_details,
metadata,
}: ChannelMessage) {
this._logger('receive server message');
Object.entries(ws_details).forEach(async ([id, detail]) => {
const addedWorkspaces: WorkspaceUnit[] = [];
const removeWorkspaceList = this._workspaces.list().map(w => w.id);
for (const [id, detail] of Object.entries(ws_details)) {
const { name, avatar } = metadata[id];
const index = removeWorkspaceList.indexOf(id);
if (index !== -1) {
removeWorkspaceList.splice(index, 1);
}
assert(name);
const workspace = {
name: name,
@@ -122,15 +131,20 @@ export class AffineProvider extends BaseProvider {
syncMode: 'core' as SyncMode,
};
if (this._workspaces.get(id)) {
// update workspaces
this._workspaces.update(id, workspace);
} else {
const workspaceUnit = await loadWorkspaceUnit(
{ id, ...workspace },
this._apis
);
this._workspaces.add(workspaceUnit);
addedWorkspaces.push(workspaceUnit);
}
});
}
// add workspaces
this._workspaces.add(addedWorkspaces);
// remove workspaces
this._workspaces.remove(removeWorkspaceList);
}
private _getWebsocketProvider(workspace: BlocksuiteWorkspace) {
@@ -386,7 +400,7 @@ export class AffineProvider extends BaseProvider {
return this._apis.getWorkspaceMembers({ id });
}
public override async acceptInvitation(invitingCode: string): Promise<void> {
await this._apis.acceptInviting({ invitingCode });
public override async acceptInvitation(invitingCode: string) {
return await this._apis.acceptInviting({ invitingCode });
}
}
@@ -197,13 +197,13 @@ export interface AcceptInvitingParams {
export async function acceptInviting(
params: AcceptInvitingParams
): Promise<void> {
await bareClient
.post(`api/invitation/${params.invitingCode}`)
.catch(error => {
sendMessage(messageCode.acceptInvitingFailed);
throw new RequestError('accept inviting failed', error);
});
): Promise<Permission> {
try {
return bareClient.post(`api/invitation/${params.invitingCode}`).json();
} catch (error) {
sendMessage(messageCode.acceptInvitingFailed);
throw new RequestError('accept inviting failed', error);
}
}
export async function uploadBlob(params: { blob: Blob }): Promise<string> {
+5 -2
View File
@@ -4,6 +4,7 @@ import { Logger, User } from '../types';
import type { WorkspaceUnitCollectionScope } from '../workspace-unit-collection';
import type { WorkspaceUnitCtorParams, WorkspaceUnit } from '../workspace-unit';
import { Member } from './affine/apis';
import { Permission } from './affine/apis/workspace.js';
const defaultLogger = () => {
return;
@@ -233,8 +234,10 @@ export class BaseProvider {
* @param {string} inviteCode
* @returns
*/
public async acceptInvitation(inviteCode: string): Promise<void> {
public async acceptInvitation(
inviteCode: string
): Promise<Permission | null> {
inviteCode;
return;
return null;
}
}