From ab4d4c0a963bc4f36ceb69d0fa23f1c3889e527f Mon Sep 17 00:00:00 2001 From: MingLiang Wang Date: Mon, 9 Jan 2023 21:18:11 +0800 Subject: [PATCH 1/6] fix: fix link to indexDB --- packages/data-center/src/provider/local/local.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/data-center/src/provider/local/local.ts b/packages/data-center/src/provider/local/local.ts index 2d368fdf5..31cbb0350 100644 --- a/packages/data-center/src/provider/local/local.ts +++ b/packages/data-center/src/provider/local/local.ts @@ -93,7 +93,7 @@ export class LocalProvider extends BaseProvider { }; const workspace = new BlocksuiteWorkspace({ room: workspaceInfo.id }); - this.linkLocal(workspace); + await this.linkLocal(workspace); workspace.meta.setName(meta.name); if (!meta.avatar) { // set default avatar From 8b95f1307610f96936b8977e928bf1f7cae8e075 Mon Sep 17 00:00:00 2001 From: MingLiang Wang Date: Mon, 9 Jan 2023 21:40:57 +0800 Subject: [PATCH 2/6] feat: remove affine --- packages/data-center/src/provider/affine/affine.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/data-center/src/provider/affine/affine.ts b/packages/data-center/src/provider/affine/affine.ts index 6cb876a52..445b64c2f 100644 --- a/packages/data-center/src/provider/affine/affine.ts +++ b/packages/data-center/src/provider/affine/affine.ts @@ -179,8 +179,7 @@ export class AffineProvider extends BaseProvider { return; } } - const user = await this._apis.signInWithGoogle?.(); - assert(user); + await this._apis.signInWithGoogle?.(); } public override async getUserInfo(): Promise { From f4eb4740d8d6f9e518d0b41c4233ef3aa33c6ac8 Mon Sep 17 00:00:00 2001 From: MingLiang Wang Date: Mon, 9 Jan 2023 21:56:24 +0800 Subject: [PATCH 3/6] feat: fix auth --- packages/data-center/src/datacenter.ts | 9 ++++----- packages/data-center/src/provider/affine/apis/token.ts | 1 + 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/data-center/src/datacenter.ts b/packages/data-center/src/datacenter.ts index 1021a4afb..8cc8f80fa 100644 --- a/packages/data-center/src/datacenter.ts +++ b/packages/data-center/src/datacenter.ts @@ -124,11 +124,10 @@ export class DataCenter { * login to all providers, it will default run all auth , * maybe need a params to control which provider to auth */ - public async login() { - this.providers.forEach(p => { - // TODO: may be add params of auth - p.auth(); - }); + public async login(providerId = 'affine') { + const provider = this.providerMap.get(providerId); + assert(provider, `provide '${providerId}' is not registered`); + provider.auth(); } /** diff --git a/packages/data-center/src/provider/affine/apis/token.ts b/packages/data-center/src/provider/affine/apis/token.ts index 3ab36adbf..62da8def9 100644 --- a/packages/data-center/src/provider/affine/apis/token.ts +++ b/packages/data-center/src/provider/affine/apis/token.ts @@ -189,6 +189,7 @@ export const getAuthorizer = () => { return [signInWithGoogle, onAuthStateChanged] as const; } catch (e) { + getLogger('getAuthorizer')(e); return [] as const; } }; From 79a760a042fed04527b1b28f427aa67d4b72aeb7 Mon Sep 17 00:00:00 2001 From: MingLiang Wang Date: Mon, 9 Jan 2023 21:59:19 +0800 Subject: [PATCH 4/6] feat: logout --- packages/data-center/src/datacenter.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/data-center/src/datacenter.ts b/packages/data-center/src/datacenter.ts index 8cc8f80fa..79d8c81ec 100644 --- a/packages/data-center/src/datacenter.ts +++ b/packages/data-center/src/datacenter.ts @@ -127,16 +127,16 @@ export class DataCenter { public async login(providerId = 'affine') { const provider = this.providerMap.get(providerId); assert(provider, `provide '${providerId}' is not registered`); - provider.auth(); + await provider.auth(); } /** * logout from all providers */ - public async logout() { - this.providers.forEach(p => { - p.logout(); - }); + public async logout(providerId = 'affine') { + const provider = this.providerMap.get(providerId); + assert(provider, `provide '${providerId}' is not registered`); + await provider.logout(); } /** From 4b39acbba2e045f1e570c8fd32e579446a655b1f Mon Sep 17 00:00:00 2001 From: alt0 Date: Tue, 10 Jan 2023 09:58:46 +0800 Subject: [PATCH 5/6] fix: affine provider init --- packages/data-center/src/provider/affine/affine.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/data-center/src/provider/affine/affine.ts b/packages/data-center/src/provider/affine/affine.ts index 445b64c2f..1538c37b1 100644 --- a/packages/data-center/src/provider/affine/affine.ts +++ b/packages/data-center/src/provider/affine/affine.ts @@ -28,6 +28,11 @@ export class AffineProvider extends BaseProvider { constructor({ apis, ...params }: AffineProviderConstructorParams) { super(params); this._apis = apis || getApis(); + this.init().then(() => { + if (this._apis.token.isLogin) { + this.loadWorkspaces(); + } + }); } override async init() { From 9b875d19d2805b7ee4f8dfb12686925b7d5773ab Mon Sep 17 00:00:00 2001 From: MingLiang Wang Date: Tue, 10 Jan 2023 11:18:04 +0800 Subject: [PATCH 6/6] feat: add ws link --- packages/data-center/src/datacenter.ts | 1 + .../data-center/src/provider/affine/affine.ts | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/data-center/src/datacenter.ts b/packages/data-center/src/datacenter.ts index 79d8c81ec..b6cbc6299 100644 --- a/packages/data-center/src/datacenter.ts +++ b/packages/data-center/src/datacenter.ts @@ -128,6 +128,7 @@ export class DataCenter { const provider = this.providerMap.get(providerId); assert(provider, `provide '${providerId}' is not registered`); await provider.auth(); + provider.loadWorkspaces(); } /** diff --git a/packages/data-center/src/provider/affine/affine.ts b/packages/data-center/src/provider/affine/affine.ts index 1538c37b1..9b327112d 100644 --- a/packages/data-center/src/provider/affine/affine.ts +++ b/packages/data-center/src/provider/affine/affine.ts @@ -76,7 +76,12 @@ export class AffineProvider extends BaseProvider { } let ws = this._wsMap.get(room); if (!ws) { - ws = new WebsocketProvider('/', room, doc); + const wsUrl = `${ + window.location.protocol === 'https:' ? 'wss' : 'ws' + }://${window.location.host}/api/sync/`; + ws = new WebsocketProvider(wsUrl, room, doc, { + params: { token: this._apis.token.refresh }, + }); this._wsMap.set(room, ws); } // close all websocket links @@ -262,7 +267,15 @@ export class AffineProvider extends BaseProvider { const nw = new BlocksuiteWorkspace({ room: id, }).register(BlockSchema); - nw.meta.setName(meta.name); + const { doc } = nw; + const updates = await this._apis.downloadWorkspace(id); + if (updates && updates.byteLength) { + await new Promise(resolve => { + doc.once('update', resolve); + applyUpdate(doc, new Uint8Array(updates)); + }); + } + // nw.meta.setName(meta.name); this.linkLocal(nw); const workspaceInfo: WorkspaceInfo = {