From 058ca6acc2cc63c6fff7805aabbf7aaf0d8d004a Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:20:56 +0200 Subject: [PATCH] add jsdoc --- .../src/packages/core/auth/auth.context.ts | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts index e366d31955..a9cc8ad18c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts @@ -6,18 +6,32 @@ import { OpenAPI } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextBase } from '@umbraco-cms/backoffice/class-api'; import { UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; -import { ReplaySubject, Subject, filter, firstValueFrom, switchMap } from '@umbraco-cms/backoffice/external/rxjs'; +import { ReplaySubject, Subject, firstValueFrom, switchMap } from '@umbraco-cms/backoffice/external/rxjs'; export class UmbAuthContext extends UmbContextBase { #isAuthorized = new UmbBooleanState(false); + + /** + * Observable that emits true if the user is authorized, otherwise false. + * @remark It will only emit when the authorization state changes. + */ readonly isAuthorized = this.#isAuthorized.asObservable(); // Timeout is different from `isAuthorized` because it can occur repeatedly #isTimeout = new Subject(); + + /** + * Observable that emits when the user has timed out, i.e. the token has expired. + * This can be used to show a timeout message to the user. + * @remark It can emit multiple times if more than one request is made after the token has expired. + */ readonly isTimeout = this.#isTimeout.asObservable(); - #isInitialized = new ReplaySubject(1); - readonly isInitialized = this.#isInitialized.asObservable().pipe(filter((isInitialized) => isInitialized)); + /** + * Observable that emits true when the auth context is initialized. + * @remark It will only emit once and then complete itself. + */ + #isInitialized = new ReplaySubject(1); get authorizationSignal() { return this.#authFlow.authorizationSignal; @@ -223,11 +237,12 @@ export class UmbAuthContext extends UmbContextBase { } setInitialized() { - this.#isInitialized.next(true); + this.#isInitialized.next(); + this.#isInitialized.complete(); } getAuthProviders(extensionsRegistry: UmbBackofficeExtensionRegistry) { - return this.isInitialized.pipe( + return this.#isInitialized.pipe( switchMap(() => extensionsRegistry.byType<'authProvider', ManifestAuthProvider>('authProvider')), ); }