refactor!: next generation AFFiNE code structure (#1176)

This commit is contained in:
Himself65
2023-03-01 01:40:01 -06:00
committed by GitHub
parent 2dcccc772c
commit e0481d29ad
270 changed files with 8308 additions and 6829 deletions

View File

@@ -0,0 +1,71 @@
import { WebsocketProvider } from '@affine/datacenter';
import { assertExists } from '@blocksuite/store';
import { IndexeddbPersistence } from 'y-indexeddb';
import {
AffineWebSocketProvider,
BlockSuiteWorkspace,
LocalIndexedDBProvider,
} from '../../shared';
import { apis } from '../../shared/apis';
export const createWebSocketProvider = (
blockSuiteWorkspace: BlockSuiteWorkspace
): AffineWebSocketProvider => {
let webSocketProvider: WebsocketProvider | null = null;
return {
flavour: 'affine-websocket',
cleanup: () => {
assertExists(webSocketProvider);
webSocketProvider?.destroy();
},
connect: () => {
const wsUrl = `${
window.location.protocol === 'https:' ? 'wss' : 'ws'
}://${window.location.host}/api/sync/`;
webSocketProvider = new WebsocketProvider(
wsUrl,
blockSuiteWorkspace.room as string,
blockSuiteWorkspace.doc,
{
params: { token: apis.auth.refresh },
// @ts-expect-error ignore the type
awareness: blockSuiteWorkspace.awarenessStore.awareness,
}
);
console.log('connect', webSocketProvider.roomname);
webSocketProvider.connect();
},
disconnect: () => {
assertExists(webSocketProvider);
console.log('disconnect', webSocketProvider.roomname);
webSocketProvider?.disconnect();
},
};
};
export const createIndexedDBProvider = (
blockSuiteWorkspace: BlockSuiteWorkspace
): LocalIndexedDBProvider => {
let indexdbProvider: IndexeddbPersistence | null = null;
return {
flavour: 'local-indexeddb',
cleanup: () => {
assertExists(indexdbProvider);
indexdbProvider.clearData();
},
connect: () => {
console.info('connect indexeddb provider', blockSuiteWorkspace.room);
indexdbProvider = new IndexeddbPersistence(
blockSuiteWorkspace.room as string,
blockSuiteWorkspace.doc
);
},
disconnect: () => {
assertExists(indexdbProvider);
console.info('disconnect indexeddb provider', blockSuiteWorkspace.room);
indexdbProvider.destroy();
indexdbProvider = null;
},
};
};