web/flows: fix duplicate loading spinners when using webauthn
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		@ -37,6 +37,13 @@ export class AuthenticatorValidateStage
 | 
			
		||||
{
 | 
			
		||||
    flowSlug = "";
 | 
			
		||||
 | 
			
		||||
    set loading(value: boolean) {
 | 
			
		||||
        this.host.loading = value;
 | 
			
		||||
    }
 | 
			
		||||
    get loading(): boolean {
 | 
			
		||||
        return this.host.loading;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @state()
 | 
			
		||||
    _selectedDeviceChallenge?: DeviceChallenge;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -19,7 +19,6 @@ import {
 | 
			
		||||
    DeviceChallenge,
 | 
			
		||||
} from "@goauthentik/api";
 | 
			
		||||
 | 
			
		||||
import { PFSize } from "../../../elements/Spinner";
 | 
			
		||||
import {
 | 
			
		||||
    transformAssertionForServer,
 | 
			
		||||
    transformCredentialRequestOptions,
 | 
			
		||||
@ -35,11 +34,8 @@ export class AuthenticatorValidateStageWebAuthn extends BaseStage<
 | 
			
		||||
    @property({ attribute: false })
 | 
			
		||||
    deviceChallenge?: DeviceChallenge;
 | 
			
		||||
 | 
			
		||||
    @property({ type: Boolean })
 | 
			
		||||
    authenticateRunning = false;
 | 
			
		||||
 | 
			
		||||
    @property()
 | 
			
		||||
    authenticateMessage = "";
 | 
			
		||||
    authenticateMessage?: string;
 | 
			
		||||
 | 
			
		||||
    @property({ type: Boolean })
 | 
			
		||||
    showBackButton = false;
 | 
			
		||||
@ -101,31 +97,24 @@ export class AuthenticatorValidateStageWebAuthn extends BaseStage<
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async authenticateWrapper(): Promise<void> {
 | 
			
		||||
        if (this.authenticateRunning) {
 | 
			
		||||
        if (this.host.loading) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        this.authenticateRunning = true;
 | 
			
		||||
        this.host.loading = true;
 | 
			
		||||
        this.authenticate()
 | 
			
		||||
            .catch((e) => {
 | 
			
		||||
                console.error(e);
 | 
			
		||||
                this.authenticateMessage = e.toString();
 | 
			
		||||
            })
 | 
			
		||||
            .finally(() => {
 | 
			
		||||
                this.authenticateRunning = false;
 | 
			
		||||
                this.host.loading = false;
 | 
			
		||||
            });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    render(): TemplateResult {
 | 
			
		||||
        return html`<div class="pf-c-login__main-body">
 | 
			
		||||
                ${this.authenticateRunning
 | 
			
		||||
                    ? html`<div class="pf-c-empty-state__content">
 | 
			
		||||
                          <div class="pf-l-bullseye">
 | 
			
		||||
                              <div class="pf-l-bullseye__item">
 | 
			
		||||
                                  <ak-spinner size="${PFSize.XLarge}"></ak-spinner>
 | 
			
		||||
                              </div>
 | 
			
		||||
                          </div>
 | 
			
		||||
                      </div>`
 | 
			
		||||
                    : html` <div class="pf-c-form__group pf-m-action">
 | 
			
		||||
                ${this.authenticateMessage
 | 
			
		||||
                    ? html`<div class="pf-c-form__group pf-m-action">
 | 
			
		||||
                          <p class="pf-m-block">${this.authenticateMessage}</p>
 | 
			
		||||
                          <button
 | 
			
		||||
                              class="pf-c-button pf-m-primary pf-m-block"
 | 
			
		||||
@ -135,7 +124,12 @@ export class AuthenticatorValidateStageWebAuthn extends BaseStage<
 | 
			
		||||
                          >
 | 
			
		||||
                              ${t`Retry authentication`}
 | 
			
		||||
                          </button>
 | 
			
		||||
                      </div>`}
 | 
			
		||||
                      </div>`
 | 
			
		||||
                    : html`<div class="pf-c-form__group pf-m-action">
 | 
			
		||||
                          <p class="pf-m-block"> </p>
 | 
			
		||||
                          <p class="pf-m-block"> </p>
 | 
			
		||||
                          <p class="pf-m-block"> </p>
 | 
			
		||||
                      </div> `}
 | 
			
		||||
            </div>
 | 
			
		||||
            <footer class="pf-c-login__main-footer">
 | 
			
		||||
                <ul class="pf-c-login__main-footer-links">
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@ import { ErrorDetail } from "@goauthentik/api";
 | 
			
		||||
export interface StageHost {
 | 
			
		||||
    challenge?: unknown;
 | 
			
		||||
    flowSlug: string;
 | 
			
		||||
    loading: boolean;
 | 
			
		||||
    submit(payload: unknown): Promise<void>;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user