refactor: remove sync binary (#1297)

This commit is contained in:
Himself65
2023-03-03 13:36:42 -06:00
committed by GitHub
parent fd510834ed
commit 296cd215c1
22 changed files with 161 additions and 202 deletions
+4 -2
View File
@@ -2,17 +2,19 @@ import { config } from '@affine/env';
import { BlockSuiteWorkspace, Provider } from '../shared';
import {
createAffineWebSocketProvider,
createBroadCastChannelProvider,
createIndexedDBProvider,
createWebSocketProvider,
} from './providers';
import { createAffineDownloadProvider } from './providers/affine';
export const createAffineProviders = (
blockSuiteWorkspace: BlockSuiteWorkspace
): Provider[] => {
return (
[
createWebSocketProvider(blockSuiteWorkspace),
createAffineDownloadProvider(blockSuiteWorkspace),
createAffineWebSocketProvider(blockSuiteWorkspace),
config.enableBroadCastChannelProvider &&
createBroadCastChannelProvider(blockSuiteWorkspace),
config.enableIndexedDBProvider &&
@@ -0,0 +1,43 @@
import { assertExists } from '@blocksuite/store';
import { AffineDownloadProvider, BlockSuiteWorkspace } from '../../../shared';
import { apis } from '../../../shared/apis';
import { providerLogger } from '../../logger';
const hashMap = new Map<string, ArrayBuffer>();
export const createAffineDownloadProvider = (
blockSuiteWorkspace: BlockSuiteWorkspace
): AffineDownloadProvider => {
assertExists(blockSuiteWorkspace.room);
const id = blockSuiteWorkspace.room;
return {
flavour: 'affine-download',
background: true,
connect: () => {
providerLogger.info('connect download provider', id);
if (hashMap.has(id)) {
providerLogger.debug('applyUpdate');
BlockSuiteWorkspace.Y.applyUpdate(
blockSuiteWorkspace.doc,
new Uint8Array(hashMap.get(id) as ArrayBuffer)
);
return;
}
apis.downloadWorkspace(id, false).then(binary => {
hashMap.set(id, binary);
providerLogger.debug('applyUpdate');
BlockSuiteWorkspace.Y.applyUpdate(
blockSuiteWorkspace.doc,
new Uint8Array(binary)
);
});
},
disconnect: () => {
providerLogger.info('disconnect download provider', id);
},
cleanup: () => {
hashMap.delete(id);
},
};
};
@@ -76,6 +76,7 @@ export const createBroadCastChannelProvider = (
};
return {
flavour: 'broadcast-channel',
background: false,
connect: () => {
assertExists(blockSuiteWorkspace.room);
broadcastChannel = Object.assign(
+12 -9
View File
@@ -11,12 +11,13 @@ import { apis } from '../../shared/apis';
import { providerLogger } from '../logger';
import { createBroadCastChannelProvider } from './broad-cast-channel';
const createWebSocketProvider = (
const createAffineWebSocketProvider = (
blockSuiteWorkspace: BlockSuiteWorkspace
): AffineWebSocketProvider => {
let webSocketProvider: WebsocketProvider | null = null;
return {
flavour: 'affine-websocket',
background: false,
cleanup: () => {
assertExists(webSocketProvider);
webSocketProvider.destroy();
@@ -54,37 +55,39 @@ const createWebSocketProvider = (
const createIndexedDBProvider = (
blockSuiteWorkspace: BlockSuiteWorkspace
): LocalIndexedDBProvider => {
let indexdbProvider: IndexeddbPersistence | null = null;
let indexeddbProvider: IndexeddbPersistence | null = null;
return {
flavour: 'local-indexeddb',
// fixme: remove background long polling
background: true,
cleanup: () => {
assertExists(indexdbProvider);
indexdbProvider.clearData();
assertExists(indexeddbProvider);
indexeddbProvider.clearData();
},
connect: () => {
providerLogger.info(
'connect indexeddb provider',
blockSuiteWorkspace.room
);
indexdbProvider = new IndexeddbPersistence(
indexeddbProvider = new IndexeddbPersistence(
blockSuiteWorkspace.room as string,
blockSuiteWorkspace.doc
);
},
disconnect: () => {
assertExists(indexdbProvider);
assertExists(indexeddbProvider);
providerLogger.info(
'disconnect indexeddb provider',
blockSuiteWorkspace.room
);
indexdbProvider.destroy();
indexdbProvider = null;
indexeddbProvider.destroy();
indexeddbProvider = null;
},
};
};
export {
createAffineWebSocketProvider,
createBroadCastChannelProvider,
createIndexedDBProvider,
createWebSocketProvider,
};