fetch current user again if that user was changed
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user