mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-25 02:13:00 +08:00
feat: support get datasource status (#3645)
This commit is contained in:
@@ -3,6 +3,7 @@ import {
|
||||
type DatasourceDocAdapter,
|
||||
writeOperation,
|
||||
} from '@affine/y-provider';
|
||||
import { assertExists } from '@blocksuite/global/utils';
|
||||
import { openDB } from 'idb';
|
||||
import type { Doc } from 'yjs';
|
||||
import { diffUpdate, mergeUpdates } from 'yjs';
|
||||
@@ -77,7 +78,6 @@ const createDatasource = ({
|
||||
const merged = mergeUpdates(rows.map(({ update }) => update));
|
||||
rows = [{ timestamp: Date.now(), update: merged }];
|
||||
}
|
||||
|
||||
await writeOperation(
|
||||
store.put({
|
||||
id: guid,
|
||||
@@ -112,6 +112,14 @@ export const createIndexedDBProvider = (
|
||||
let provider: ReturnType<typeof createLazyProvider> | null = null;
|
||||
|
||||
const apis = {
|
||||
get status() {
|
||||
assertExists(provider);
|
||||
return provider.status;
|
||||
},
|
||||
subscribeStatusChange(onStatusChange) {
|
||||
assertExists(provider);
|
||||
return provider.subscribeStatusChange(onStatusChange);
|
||||
},
|
||||
connect: () => {
|
||||
if (apis.connected) {
|
||||
apis.disconnect();
|
||||
@@ -132,7 +140,7 @@ export const createIndexedDBProvider = (
|
||||
get connected() {
|
||||
return provider?.connected || false;
|
||||
},
|
||||
};
|
||||
} satisfies IndexedDBProvider;
|
||||
|
||||
return apis;
|
||||
};
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { StatusAdapter } from '@affine/y-provider';
|
||||
import type { DBSchema, IDBPDatabase } from 'idb';
|
||||
|
||||
export const dbVersion = 1;
|
||||
@@ -8,7 +9,7 @@ export function upgradeDB(db: IDBPDatabase<BlockSuiteBinaryDB>) {
|
||||
db.createObjectStore('milestone', { keyPath: 'id' });
|
||||
}
|
||||
|
||||
export interface IndexedDBProvider {
|
||||
export interface IndexedDBProvider extends StatusAdapter {
|
||||
connect: () => void;
|
||||
disconnect: () => void;
|
||||
cleanup: () => Promise<void>;
|
||||
|
||||
Reference in New Issue
Block a user