diff --git a/server/src/services/page.service.ts b/server/src/services/page.service.ts index 3fc85c738c..d769c3bc36 100644 --- a/server/src/services/page.service.ts +++ b/server/src/services/page.service.ts @@ -102,33 +102,6 @@ export class PageService { const pageEvents = await this.eventHandlerService.findAllEventsWithSourceId(pageId); const componentsIdMap = {}; - // Clone events - await Promise.all( - pageEvents.map(async (event) => { - const eventDefinition = event.event; - - if (eventDefinition?.actionId === 'control-component') { - eventDefinition.componentId = componentsIdMap[eventDefinition.componentId]; - } - - if (eventDefinition?.actionId == 'show-modal' || eventDefinition?.actionId === 'hide-modal') { - eventDefinition.modal = componentsIdMap[eventDefinition.modal]; - } - - event.event = eventDefinition; - - const clonedEvent = new EventHandler(); - clonedEvent.event = event.event; - clonedEvent.index = event.index; - clonedEvent.name = event.name; - clonedEvent.sourceId = clonePageId; - clonedEvent.target = event.target; - clonedEvent.appVersionId = event.appVersionId; - - await manager.save(EventHandler, clonedEvent); - }) - ); - // Clone components const clonedComponents = await Promise.all( pageComponents.map(async (component) => { @@ -146,7 +119,7 @@ export class PageService { // Clone component events const clonedComponentEvents = await this.eventHandlerService.findAllEventsWithSourceId(component.id); const clonedEvents = clonedComponentEvents.map((event) => { - const eventDefinition = event.event; + const eventDefinition = updateEntityReferences(event.event, componentsIdMap); if (eventDefinition?.actionId === 'control-component') { eventDefinition.componentId = componentsIdMap[eventDefinition.componentId]; @@ -176,6 +149,33 @@ export class PageService { }) ); + // Clone events + await Promise.all( + pageEvents.map(async (event) => { + const eventDefinition = updateEntityReferences(event.event, componentsIdMap); + + if (eventDefinition?.actionId === 'control-component') { + eventDefinition.componentId = componentsIdMap[eventDefinition.componentId]; + } + + if (eventDefinition?.actionId == 'show-modal' || eventDefinition?.actionId === 'hide-modal') { + eventDefinition.modal = componentsIdMap[eventDefinition.modal]; + } + + event.event = eventDefinition; + + const clonedEvent = new EventHandler(); + clonedEvent.event = event.event; + clonedEvent.index = event.index; + clonedEvent.name = event.name; + clonedEvent.sourceId = clonePageId; + clonedEvent.target = event.target; + clonedEvent.appVersionId = event.appVersionId; + + await manager.save(EventHandler, clonedEvent); + }) + ); + const hasParentIdSuffixed = (component, allComponents = [], componentParentId = undefined) => { if (componentParentId) { const parentId = component?.parent?.split('-').slice(0, -1).join('-');