diff --git a/packages/data-center/src/datacenter.ts b/packages/data-center/src/datacenter.ts index d033b0b6d..a2cd19d29 100644 --- a/packages/data-center/src/datacenter.ts +++ b/packages/data-center/src/datacenter.ts @@ -128,20 +128,20 @@ 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`); + await provider.auth(); + provider.loadWorkspaces(); } /** * 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(); } /** diff --git a/packages/data-center/src/provider/affine/affine.ts b/packages/data-center/src/provider/affine/affine.ts index 763871149..bf60a611c 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() { @@ -78,7 +83,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 @@ -186,8 +196,7 @@ export class AffineProvider extends BaseProvider { return; } } - const user = await this._apis.signInWithGoogle?.(); - assert(user); + await this._apis.signInWithGoogle?.(); } public override async getUserInfo(): Promise { 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; } }; diff --git a/packages/data-center/src/provider/local/local.ts b/packages/data-center/src/provider/local/local.ts index ecdf32562..da87f5521 100644 --- a/packages/data-center/src/provider/local/local.ts +++ b/packages/data-center/src/provider/local/local.ts @@ -95,6 +95,7 @@ export class LocalProvider extends BaseProvider { this.linkLocal(blocksuiteWorkspace); blocksuiteWorkspace.meta.setName(meta.name); + if (!meta.avatar) { // set default avatar const blob = await getDefaultHeadImgBlob(meta.name);