Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions src/vs/workbench/services/accounts/browser/defaultAccount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -422,18 +422,14 @@ class DefaultAccountProvider extends Disposable implements IDefaultAccountProvid

private async whenDefaultAccountAuthenticationProviderAvailable(): Promise<void> {
const provider = this.getDefaultAccountAuthenticationProvider();
const isAvailable = () => {
return this.authenticationService.declaredProviders.some(p => p.id === provider.id)
|| this.authenticationService.isAuthenticationProviderRegistered(provider.id);
};

this.logService.debug('[DefaultAccount] Waiting for default account authentication provider to be available.');
const disposables = new DisposableStore();
try {
await new Promise<void>(resolve => {
// Check if the provider is available.
// If available, resolve immediately. Otherwise, wait for it to be declared or registered.
if (isAvailable()) {
if (this.isAccountProviderAvailable(provider)) {
this.logService.debug('[DefaultAccount] Default account authentication provider is now available.');
resolve();
return;
Expand All @@ -442,7 +438,7 @@ class DefaultAccountProvider extends Disposable implements IDefaultAccountProvid
// Resolve as soon as the default account authentication provider is declared or
// registered, but wait no longer than installed extensions being registered.
disposables.add(Event.any(this.authenticationService.onDidChangeDeclaredProviders, this.authenticationService.onDidRegisterAuthenticationProvider)(() => {
if (isAvailable()) {
if (this.isAccountProviderAvailable(provider)) {
this.logService.debug('[DefaultAccount] Default account authentication provider is now available.');
resolve();
}
Expand Down Expand Up @@ -513,15 +509,19 @@ class DefaultAccountProvider extends Disposable implements IDefaultAccountProvid
const defaultAccountProvider = this.getDefaultAccountAuthenticationProvider();
this.logService.debug('[DefaultAccount] Default account provider ID:', defaultAccountProvider.id);

const declaredProvider = this.authenticationService.declaredProviders.find(provider => provider.id === defaultAccountProvider.id);
if (!declaredProvider) {
this.logService.info(`[DefaultAccount] Authentication provider is not declared.`, defaultAccountProvider);
if (!this.isAccountProviderAvailable(defaultAccountProvider)) {
this.logService.info(`[DefaultAccount] Authentication provider is not available.`, defaultAccountProvider);
return null;
}

return await this.getDefaultAccountForAuthenticationProvider(defaultAccountProvider, options);
}

private isAccountProviderAvailable(accountProvider: IDefaultAccountAuthenticationProvider): boolean {
return this.authenticationService.declaredProviders.some(p => p.id === accountProvider.id)
|| this.authenticationService.isAuthenticationProviderRegistered(accountProvider.id);
}

private setDefaultAccount(account: IDefaultAccountData | null): void {
if (equals(this._defaultAccount, account)) {
return;
Expand Down
Loading