From 01b419dc9a9a215edcc271591ca2f082d00bbfd2 Mon Sep 17 00:00:00 2001 From: Wroud Date: Tue, 6 Apr 2021 12:59:28 +0300 Subject: [PATCH] fix(plugin-authentication): CB-924 auth dialog mode switch --- .../src/Dialog/AuthDialog.tsx | 2 +- .../src/Dialog/AuthDialogController.ts | 22 ++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/webapp/packages/plugin-authentication/src/Dialog/AuthDialog.tsx b/webapp/packages/plugin-authentication/src/Dialog/AuthDialog.tsx index 17484b13ac..d31342e414 100644 --- a/webapp/packages/plugin-authentication/src/Dialog/AuthDialog.tsx +++ b/webapp/packages/plugin-authentication/src/Dialog/AuthDialog.tsx @@ -107,7 +107,7 @@ export const AuthDialog: DialogComponent = observer(function if (provider) { controller.selectProvider(provider); } else { - controller.admin = administrationScreenService.activeScreen !== null; + controller.setAdminMode(administrationScreenService.activeScreen !== null); } const showTabs = !provider && controller.providers.length > 1; diff --git a/webapp/packages/plugin-authentication/src/Dialog/AuthDialogController.ts b/webapp/packages/plugin-authentication/src/Dialog/AuthDialogController.ts index 17a45c1feb..a79973c0e8 100644 --- a/webapp/packages/plugin-authentication/src/Dialog/AuthDialogController.ts +++ b/webapp/packages/plugin-authentication/src/Dialog/AuthDialogController.ts @@ -38,7 +38,7 @@ export class AuthDialogController implements IInitializableController, IDestruct readonly error = new GQLErrorCatcher(); private isDistructed = false; private link!: boolean; - admin: boolean; + private admin: boolean; private close!: () => void; constructor( @@ -47,7 +47,7 @@ export class AuthDialogController implements IInitializableController, IDestruct private authInfoService: AuthInfoService, private commonDialogService: CommonDialogService ) { - makeObservable(this, { + makeObservable(this, { provider: observable, isAuthenticating: observable, credentials: observable, @@ -64,6 +64,14 @@ export class AuthDialogController implements IInitializableController, IDestruct this.loadProviders(); } + setAdminMode(mode: boolean): void { + if (this.admin !== mode) { + this.admin = mode; + + this.selectFirstAvailable(); + } + } + destruct(): void { this.isDistructed = true; } @@ -104,14 +112,18 @@ export class AuthDialogController implements IInitializableController, IDestruct try { await this.authProvidersResource.loadAll(); - if (this.providers.length > 0) { - this.provider = this.providers.find(provider => provider.defaultProvider) ?? this.providers[0]; - } + this.selectFirstAvailable(); } catch (exception) { this.notificationService.logException(exception, 'Can\'t load auth providers'); } } + private selectFirstAvailable(): void { + if (this.providers.length > 0) { + this.provider = this.providers.find(provider => provider.defaultProvider) ?? this.providers[0]; + } + } + private compareProviders = (providerA: AuthProvider, providerB: AuthProvider): number => { if (providerA.defaultProvider === providerB.defaultProvider) { return providerA.label.localeCompare(providerB.label);