Skip to content

Commit

Permalink
feat(y-indexeddb): add connected (#2208)
Browse files Browse the repository at this point in the history
Co-authored-by: Himself65 <[email protected]>
  • Loading branch information
sxzz and himself65 committed May 5, 2023
1 parent de0b300 commit 2c49c77
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 0 deletions.
6 changes: 6 additions & 0 deletions packages/y-indexeddb/src/__tests__/index.spec.ts
Expand Up @@ -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: '' });
Expand All @@ -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);
});

Expand Down
5 changes: 5 additions & 0 deletions packages/y-indexeddb/src/index.ts
Expand Up @@ -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;
Expand Down Expand Up @@ -287,6 +289,9 @@ export const createIndexedDBProvider = (
(await dbPromise).delete('workspace', id);
},
whenSynced: Promise.resolve(),
get connected() {
return connected;
},
};

return apis;
Expand Down
1 change: 1 addition & 0 deletions packages/y-indexeddb/src/shared.ts
Expand Up @@ -13,6 +13,7 @@ export interface IndexedDBProvider {
disconnect: () => void;
cleanup: () => Promise<void>;
whenSynced: Promise<void>;
readonly connected: boolean;
}

export type UpdateMessage = {
Expand Down

1 comment on commit 2c49c77

@vercel
Copy link

@vercel vercel bot commented on 2c49c77 May 5, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

affine-storybook – ./packages/component

affine-storybook.vercel.app
affine-storybook-toeverything.vercel.app
affine-storybook-git-master-toeverything.vercel.app
storybook.affine.pro

Please sign in to comment.