fetch current user again if that user was changed

This commit is contained in:
Jacob Overgaard
2023-07-27 16:31:04 +02:00
parent c274d78e59
commit d943058b3c

View File

@@ -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<UmbUserRepository, UmbUserDetail>
implements UmbEntityWorkspaceContextInterface<UmbUserDetail | undefined>
{
#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<UmbUserDetail | undefined>(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<void> {
if (!this.#authContext) return;
const currentUser = await firstValueFrom(this.#authContext.currentUser);
if (currentUser?.id === savedUserId) {
await this.#authContext.fetchCurrentUser();
}
}
destroy(): void {