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 {