fix(plugin-authentication): CB-924 auth dialog mode switch

This commit is contained in:
Wroud
2021-04-06 12:59:28 +03:00
parent 544698810a
commit 01b419dc9a
2 changed files with 18 additions and 6 deletions
@@ -107,7 +107,7 @@ export const AuthDialog: DialogComponent<IAuthPayload, null> = 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;
@@ -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<AuthDialogController, 'admin'>(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);