From e408564b7423a72a3d8296c3960a86bafb3be0b2 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 15 Apr 2020 19:38:00 +0200 Subject: [PATCH] initialize only after provider is registered --- .../browser/userDataSyncAccount.ts | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.ts b/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.ts index 0541a68d9af..df54c0eae7e 100644 --- a/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.ts +++ b/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAccount.ts @@ -57,20 +57,24 @@ export class UserDataSyncAccountManager extends Disposable { super(); this.userDataSyncAccountProvider = getUserDataSyncStore(productService, configurationService)?.authenticationProviderId; if (this.userDataSyncAccountProvider) { - this.update(); - this._register( - Event.any( - Event.filter( - Event.any( - this.authenticationService.onDidRegisterAuthenticationProvider, - this.authenticationService.onDidUnregisterAuthenticationProvider, - Event.map(this.authenticationService.onDidChangeSessions, e => e.providerId) - ), providerId => providerId === this.userDataSyncAccountProvider), - authenticationTokenService.onTokenFailed) - (() => this.update())); + this._register(Event.once(Event.filter(this.authenticationService.onDidRegisterAuthenticationProvider, providerId => providerId === this.userDataSyncAccountProvider))(() => this.initialize())); } } + private async initialize(): Promise { + await this.update(); + this._register( + Event.any( + Event.filter( + Event.any( + this.authenticationService.onDidRegisterAuthenticationProvider, + this.authenticationService.onDidUnregisterAuthenticationProvider, + Event.map(this.authenticationService.onDidChangeSessions, e => e.providerId) + ), providerId => providerId === this.userDataSyncAccountProvider), + this.authenticationTokenService.onTokenFailed) + (() => this.update())); + } + private async update(): Promise { if (!this.userDataSyncAccountProvider) { return;