feat(y-indexeddb): add connected (#2208)

Co-authored-by: Himself65 <himself65@outlook.com>
This commit is contained in:
三咲智子 Kevin Deng
2023-05-05 11:42:49 +08:00
committed by GitHub
parent de0b300aca
commit 2c49c774af
3 changed files with 12 additions and 0 deletions

View File

@@ -136,10 +136,12 @@ describe('indexeddb provider', () => {
rootDBName
);
provider.connect();
expect(provider.connected).toBe(true);
const p1 = provider.whenSynced;
await p1;
const snapshot = encodeStateAsUpdate(workspace.doc);
provider.disconnect();
expect(provider.connected).toBe(false);
{
const page = workspace.createPage('page0');
const pageBlockId = page.addBlock('affine:page', { title: '' });
@@ -151,14 +153,18 @@ describe('indexeddb provider', () => {
expect(updates.length).toBe(1);
expect(updates[0]).toEqual(snapshot);
}
expect(provider.connected).toBe(false);
provider.connect();
expect(provider.connected).toBe(true);
const p2 = provider.whenSynced;
await p2;
{
const updates = await getUpdates(workspace.id);
expect(updates).not.toEqual([]);
}
expect(provider.connected).toBe(true);
provider.disconnect();
expect(provider.connected).toBe(false);
expect(p1).not.toBe(p2);
});

View File

@@ -209,6 +209,8 @@ export const createIndexedDBProvider = (
};
const apis = {
connect: async () => {
if (connected) return;
apis.whenSynced = new Promise<void>((_resolve, _reject) => {
early = true;
resolve = _resolve;
@@ -287,6 +289,9 @@ export const createIndexedDBProvider = (
(await dbPromise).delete('workspace', id);
},
whenSynced: Promise.resolve(),
get connected() {
return connected;
},
};
return apis;

View File

@@ -13,6 +13,7 @@ export interface IndexedDBProvider {
disconnect: () => void;
cleanup: () => Promise<void>;
whenSynced: Promise<void>;
readonly connected: boolean;
}
export type UpdateMessage = {