From ca1476f7c78fedc630ef45dbc11bbb877650a666 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Tue, 22 Jul 2025 14:22:11 +0200 Subject: [PATCH] Fires the updated event when content types are updated (#19768) * Fires the updated event when content types are updated. * Housekeeping: separating/sorting import types --------- Co-authored-by: leekelleher --- .../content-type-workspace-context-base.ts | 51 ++++++++++++------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/content/content-type/workspace/content-type-workspace-context-base.ts b/src/Umbraco.Web.UI.Client/src/packages/content/content-type/workspace/content-type-workspace-context-base.ts index 068eaed33c..bbc93cf00f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/content/content-type/workspace/content-type-workspace-context-base.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/content/content-type/workspace/content-type-workspace-context-base.ts @@ -1,26 +1,27 @@ -import type { UmbContentTypeCompositionModel, UmbContentTypeDetailModel, UmbContentTypeSortModel } from '../types.js'; import { UmbContentTypeStructureManager } from '../structure/index.js'; +import type { UmbContentTypeCompositionModel, UmbContentTypeDetailModel, UmbContentTypeSortModel } from '../types.js'; import type { UmbContentTypeWorkspaceContext } from './content-type-workspace-context.interface.js'; +import { UmbEntityDetailWorkspaceContextBase } from '@umbraco-cms/backoffice/workspace'; +import { + UmbEntityUpdatedEvent, + UmbRequestReloadChildrenOfEntityEvent, + UmbRequestReloadStructureForEntityEvent, +} from '@umbraco-cms/backoffice/entity-action'; +import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; +import type { Observable } from '@umbraco-cms/backoffice/observable-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import type { UmbEntityModel } from '@umbraco-cms/backoffice/entity'; import type { UmbDetailRepository, UmbRepositoryResponse, UmbRepositoryResponseWithAsObservable, } from '@umbraco-cms/backoffice/repository'; -import { - UmbEntityDetailWorkspaceContextBase, - type UmbEntityDetailWorkspaceContextArgs, - type UmbEntityDetailWorkspaceContextCreateArgs, - type UmbRoutableWorkspaceContext, +import type { + UmbEntityDetailWorkspaceContextArgs, + UmbEntityDetailWorkspaceContextCreateArgs, + UmbRoutableWorkspaceContext, } from '@umbraco-cms/backoffice/workspace'; import type { UmbReferenceByUnique } from '@umbraco-cms/backoffice/models'; -import type { Observable } from '@umbraco-cms/backoffice/observable-api'; -import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; -import { - UmbRequestReloadChildrenOfEntityEvent, - UmbRequestReloadStructureForEntityEvent, -} from '@umbraco-cms/backoffice/entity-action'; -import type { UmbEntityModel } from '@umbraco-cms/backoffice/entity'; // eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface UmbContentTypeWorkspaceContextArgs extends UmbEntityDetailWorkspaceContextArgs {} @@ -183,16 +184,28 @@ export abstract class UmbContentTypeWorkspaceContextBase< this._data.setPersisted(this.structure.getOwnerContentType()); - const actionEventContext = await this.getContext(UMB_ACTION_EVENT_CONTEXT); - if (!actionEventContext) { + const eventContext = await this.getContext(UMB_ACTION_EVENT_CONTEXT); + if (!eventContext) { throw new Error('Could not get the action event context'); } - const event = new UmbRequestReloadStructureForEntityEvent({ - unique: this.getUnique()!, - entityType: this.getEntityType(), + + const unique = this.getUnique()!; + const entityType = this.getEntityType(); + + const reloadStructureEvent = new UmbRequestReloadStructureForEntityEvent({ + unique, + entityType, }); - actionEventContext.dispatchEvent(event); + eventContext.dispatchEvent(reloadStructureEvent); + + const updatedEvent = new UmbEntityUpdatedEvent({ + unique, + entityType, + eventUnique: this._workspaceEventUnique, + }); + + eventContext.dispatchEvent(updatedEvent); } catch (error) { console.error(error); }