refactor: unify synced and un-synced affine workspace (#1299)

This commit is contained in:
Himself65
2023-03-03 13:58:15 -06:00
committed by GitHub
parent 296cd215c1
commit 50ff9b0c5c
7 changed files with 19 additions and 71 deletions

View File

@@ -3,10 +3,6 @@ import { Workspace as BlockSuiteWorkspace } from '@blocksuite/store';
import { NextPage } from 'next';
import { ReactElement, ReactNode } from 'react';
import { createAffineProviders } from '../blocksuite';
import { createEmptyBlockSuiteWorkspace } from '../utils';
import { apis } from './apis';
export { BlockSuiteWorkspace };
declare global {
@@ -21,20 +17,11 @@ export const enum RemWorkspaceFlavour {
}
export interface FlavourToWorkspace {
[RemWorkspaceFlavour.AFFINE]:
| AffineRemoteUnSyncedWorkspace
| AffineRemoteSyncedWorkspace;
[RemWorkspaceFlavour.AFFINE]: AffineWorkspace;
[RemWorkspaceFlavour.LOCAL]: LocalWorkspace;
}
export interface AffineRemoteSyncedWorkspace extends RemoteWorkspace {
flavour: RemWorkspaceFlavour.AFFINE;
firstBinarySynced: true;
blockSuiteWorkspace: BlockSuiteWorkspace;
providers: Provider[];
}
export interface AffineRemoteUnSyncedWorkspace extends RemoteWorkspace {
export interface AffineWorkspace extends RemoteWorkspace {
flavour: RemWorkspaceFlavour.AFFINE;
// empty
blockSuiteWorkspace: BlockSuiteWorkspace;
@@ -48,33 +35,6 @@ export interface LocalWorkspace {
providers: Provider[];
}
export const transformToAffineSyncedWorkspace = async (
unSyncedWorkspace: AffineRemoteUnSyncedWorkspace,
binary: ArrayBuffer
): Promise<AffineRemoteSyncedWorkspace> => {
const blockSuiteWorkspace = createEmptyBlockSuiteWorkspace(
unSyncedWorkspace.id,
(k: string) =>
// fixme: token could be expired
({ api: '/api/workspace', token: apis.auth.token }[k])
);
BlockSuiteWorkspace.Y.applyUpdate(
blockSuiteWorkspace.doc,
new Uint8Array(binary)
);
return new Promise(resolve => {
// Fixme: https://github.com/toeverything/blocksuite/issues/1350
setTimeout(() => {
resolve({
...unSyncedWorkspace,
blockSuiteWorkspace,
firstBinarySynced: true,
providers: [...createAffineProviders(blockSuiteWorkspace)],
});
}, 0);
});
};
export type BaseProvider = {
flavour: string;
// if this is true, we will connect the provider on the background
@@ -106,10 +66,7 @@ export type Provider =
| AffineWebSocketProvider
| BroadCastChannelProvider;
export type AffineRemoteWorkspace =
| AffineRemoteSyncedWorkspace
| AffineRemoteUnSyncedWorkspace;
export type AffineOfficialWorkspace = AffineRemoteWorkspace | LocalWorkspace;
export type AffineOfficialWorkspace = AffineWorkspace | LocalWorkspace;
export type RemWorkspace = AffineOfficialWorkspace;