From d943058b3cc13ffbd68433363eab97c323e2bd8c Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 27 Jul 2023 16:31:04 +0200 Subject: [PATCH] fetch current user again if that user was changed --- .../users/workspace/user-workspace.context.ts | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/users/users/workspace/user-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/users/users/workspace/user-workspace.context.ts index 4c412aa48d..8674f4314b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/users/users/workspace/user-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/users/users/workspace/user-workspace.context.ts @@ -2,15 +2,24 @@ import { UmbUserRepository } from '../repository/user.repository.js'; import { type UmbUserDetail } from '../index.js'; import { UmbEntityWorkspaceContextInterface, UmbWorkspaceContext } from '@umbraco-cms/backoffice/workspace'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; -import { UpdateUserRequestModel } from '@umbraco-cms/backoffice/backend-api'; +import type { UpdateUserRequestModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UMB_AUTH } from '@umbraco-cms/backoffice/auth'; +import { firstValueFrom } from '@umbraco-cms/backoffice/external/rxjs'; export class UmbUserWorkspaceContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { + #authContext?: typeof UMB_AUTH.TYPE; + constructor(host: UmbControllerHostElement) { super(host, new UmbUserRepository(host)); + + new UmbContextConsumerController(host, UMB_AUTH, (auth) => { + this.#authContext = auth; + }); } #data = new UmbObjectState(undefined); @@ -55,6 +64,17 @@ export class UmbUserWorkspaceContext } // If it went well, then its not new anymore?. this.setIsNew(false); + + // If we are saving the current user, we need to refetch it + await this.#reloadCurrentUser(this.#data.value.id); + } + + async #reloadCurrentUser(savedUserId: string): Promise { + if (!this.#authContext) return; + const currentUser = await firstValueFrom(this.#authContext.currentUser); + if (currentUser?.id === savedUserId) { + await this.#authContext.fetchCurrentUser(); + } } destroy(): void {