From cc48e936ea793a607df29a810f06a0207ec3fef9 Mon Sep 17 00:00:00 2001 From: Arpit Date: Mon, 16 Oct 2023 16:49:42 +0530 Subject: [PATCH] [appdef] fixes: event actions mapping for import-export (#7895) * fixes: event actions mapping for import-export * fixes: updates organisation id --- frontend/src/Editor/EditorFunc.jsx | 3 +- .../src/Editor/Inspector/EventManager.jsx | 1 - frontend/src/HomePage/ExportAppModal.jsx | 2 +- .../src/services/app_import_export.service.ts | 85 ++++++++++--------- 4 files changed, 48 insertions(+), 43 deletions(-) diff --git a/frontend/src/Editor/EditorFunc.jsx b/frontend/src/Editor/EditorFunc.jsx index 116e288131..3fa48e67ab 100644 --- a/frontend/src/Editor/EditorFunc.jsx +++ b/frontend/src/Editor/EditorFunc.jsx @@ -676,11 +676,12 @@ const EditorComponent = (props) => { const appVersions = await appEnvironmentService.getVersionsByEnvironment(data?.id); setAppVersions(appVersions.appVersions); + const currentOrgId = data?.organization_id || data?.organizationId; updateState({ slug: data.slug, isMaintenanceOn: data?.is_maintenance_on, - organizationId: data?.organization_id, + organizationId: currentOrgId, isPublic: data?.is_public, appName: data?.name, userId: data?.user_id, diff --git a/frontend/src/Editor/Inspector/EventManager.jsx b/frontend/src/Editor/Inspector/EventManager.jsx index 55559b6898..8a4ba36e59 100644 --- a/frontend/src/Editor/Inspector/EventManager.jsx +++ b/frontend/src/Editor/Inspector/EventManager.jsx @@ -909,7 +909,6 @@ export const EventManager = ({
{events.map((event, index) => { const actionMeta = ActionTypes.find((action) => action.id === event.event.actionId); - // const rowClassName = `card-body p-0 ${focusedEventIndex === index ? ' bg-azure-lt' : ''}`; return ( diff --git a/frontend/src/HomePage/ExportAppModal.jsx b/frontend/src/HomePage/ExportAppModal.jsx index fa2b74e0fc..a52fdd5eae 100644 --- a/frontend/src/HomePage/ExportAppModal.jsx +++ b/frontend/src/HomePage/ExportAppModal.jsx @@ -54,7 +54,7 @@ export default function ExportAppModal({ title, show, closeModal, customClassNam const requestBody = { ...appOpts, ...(exportTjDb && { tooljet_database: tables }), - organization_id: app.organization_id, + organization_id: app.organization_id ?? app.organizationId, }; appService diff --git a/server/src/services/app_import_export.service.ts b/server/src/services/app_import_export.service.ts index 9a84c2f1e3..db6bb52701 100644 --- a/server/src/services/app_import_export.service.ts +++ b/server/src/services/app_import_export.service.ts @@ -464,6 +464,18 @@ export class AppImportExportService { } } + const appVersionIds = Object.values(appResourceMappings.appVersionMapping); + + for (const appVersionId of appVersionIds) { + await this.updateEventActionsForNewVersionWithNewMappingIds( + manager, + appVersionId, + appResourceMappings.dataQueryMapping, + appResourceMappings.componentsMapping, + appResourceMappings.pagesMapping + ); + } + await this.setEditingVersionAsLatestVersion(manager, appResourceMappings.appVersionMapping, importingAppVersions); return appResourceMappings; @@ -657,14 +669,14 @@ export class AppImportExportService { if (componentEvents.length > 0) { componentEvents.forEach(async (componentEvent) => { - const newEvent = { - name: componentEvent.name, - sourceId: savedComponent.id, - target: componentEvent.target, - event: componentEvent.event, - index: componentEvent.index, - appVersionId: appResourceMappings.appVersionMapping[importingAppVersion.id], - }; + const newEvent = new EventHandler(); + newEvent.name = componentEvent.name; + newEvent.sourceId = savedComponent.id; + newEvent.target = componentEvent.target; + newEvent.event = componentEvent.event; + newEvent.index = componentEvent.index; + newEvent.appVersionId = appResourceMappings.appVersionMapping[importingAppVersion.id]; + await manager.save(EventHandler, newEvent); }); } @@ -703,18 +715,11 @@ export class AppImportExportService { if (importingQueryEvents.length > 0) { importingQueryEvents.forEach(async (dataQueryEvent) => { - const updatedEventDefinition = this.updateEventActionsForNewVersionWithNewMappingIds( - dataQueryEvent, - appResourceMappings.dataQueryMapping, - appResourceMappings.componentsMapping, - appResourceMappings.pagesMapping - ); - const newEvent = { name: dataQueryEvent.name, sourceId: mappedNewDataQuery.id, target: dataQueryEvent.target, - event: updatedEventDefinition, + event: dataQueryEvent.event, index: dataQueryEvent.index, appVersionId: appResourceMappings.appVersionMapping[importingAppVersion.id], }; @@ -726,18 +731,11 @@ export class AppImportExportService { delete mappedNewDataQuery?.options?.events; queryEvents.forEach(async (event, index) => { - const updatedEventDefinition = this.updateEventActionsForNewVersionWithNewMappingIds( - { event: event }, - appResourceMappings.dataQueryMapping, - appResourceMappings.componentsMapping, - appResourceMappings.pagesMapping - ); - const newEvent = { name: event.eventId, sourceId: mappedNewDataQuery.id, target: Target.dataQuery, - event: updatedEventDefinition, + event: event.event, index: queryEvents.index || index, appVersionId: mappedNewDataQuery.appVersionId, }; @@ -1402,29 +1400,36 @@ export class AppImportExportService { return { ...queryOptions, table_id: tooljetDatabaseMapping[queryOptions.table_id]?.id }; } - updateEventActionsForNewVersionWithNewMappingIds( - queryEvent: EventHandler | { event: any }, + async updateEventActionsForNewVersionWithNewMappingIds( + manager: EntityManager, + versionId: string, oldDataQueryToNewMapping: Record, oldComponentToNewComponentMapping: Record, oldPageToNewPageMapping: Record ) { - const event = JSON.parse(JSON.stringify(queryEvent)); + const allEvents = await manager.find(EventHandler, { + where: { appVersionId: versionId }, + }); - const eventDefinition = event.event; + for (const event of allEvents) { + const eventDefinition = event.event; - if (eventDefinition?.actionId === 'run-query') { - eventDefinition.queryId = oldDataQueryToNewMapping[eventDefinition.queryId]; + if (eventDefinition?.actionId === 'run-query') { + eventDefinition.queryId = oldDataQueryToNewMapping[eventDefinition.queryId]; + } + + if (eventDefinition?.actionId === 'control-component') { + eventDefinition.componentId = oldComponentToNewComponentMapping[eventDefinition.componentId]; + } + + if (eventDefinition?.actionId === 'switch-page') { + eventDefinition.pageId = oldPageToNewPageMapping[eventDefinition.pageId]; + } + + event.event = eventDefinition; + + await manager.save(event); } - - if (eventDefinition?.actionId === 'control-component') { - eventDefinition.componentId = oldComponentToNewComponentMapping[eventDefinition.componentId]; - } - - if (eventDefinition?.actionId === 'switch-page') { - eventDefinition.pageId = oldPageToNewPageMapping[eventDefinition.pageId]; - } - - return eventDefinition; } }