mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-13 12:55:00 +00:00
refactor: unify synced and un-synced affine workspace (#1299)
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user