mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-27 02:42:25 +08:00
feat(y-indexeddb): add connected (#2208)
Co-authored-by: Himself65 <himself65@outlook.com>
This commit is contained in:
@@ -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);
|
||||
});
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -13,6 +13,7 @@ export interface IndexedDBProvider {
|
||||
disconnect: () => void;
|
||||
cleanup: () => Promise<void>;
|
||||
whenSynced: Promise<void>;
|
||||
readonly connected: boolean;
|
||||
}
|
||||
|
||||
export type UpdateMessage = {
|
||||
|
||||
Reference in New Issue
Block a user