From 650a037f67b555c70bcca3b47f594aa06f6c8458 Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Mon, 13 Oct 2025 17:25:08 +0200 Subject: [PATCH] Prevent losing form data when workflow is not defined (#15055) When updating an active version, we : - create a draft - update the draft Issue is that after the creation, workflow is shortly null. So the component is re-rendered and the form data are lost. Removing the check on the null allow to keep the form data. --- .../components/CommandMenuWorkflowEditStep.tsx | 14 ++++---------- .../components/WorkflowDiagramEffect.tsx | 12 +----------- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/packages/twenty-front/src/modules/command-menu/pages/workflow/step/edit/components/CommandMenuWorkflowEditStep.tsx b/packages/twenty-front/src/modules/command-menu/pages/workflow/step/edit/components/CommandMenuWorkflowEditStep.tsx index 285f796a1c..a7bf32a661 100644 --- a/packages/twenty-front/src/modules/command-menu/pages/workflow/step/edit/components/CommandMenuWorkflowEditStep.tsx +++ b/packages/twenty-front/src/modules/command-menu/pages/workflow/step/edit/components/CommandMenuWorkflowEditStep.tsx @@ -1,24 +1,18 @@ import { useCommandMenuWorkflowIdOrThrow } from '@/command-menu/pages/workflow/hooks/useCommandMenuWorkflowIdOrThrow'; import { CommandMenuWorkflowEditStepContent } from '@/command-menu/pages/workflow/step/edit/components/CommandMenuWorkflowEditStepContent'; -import { useWorkflowWithCurrentVersion } from '@/workflow/hooks/useWorkflowWithCurrentVersion'; import { getWorkflowVisualizerComponentInstanceId } from '@/workflow/utils/getWorkflowVisualizerComponentInstanceId'; import { WorkflowVisualizerComponentInstanceContext } from '@/workflow/workflow-diagram/states/contexts/WorkflowVisualizerComponentInstanceContext'; -import { isDefined } from 'twenty-shared/utils'; export const CommandMenuWorkflowEditStep = () => { const workflowId = useCommandMenuWorkflowIdOrThrow(); - const workflow = useWorkflowWithCurrentVersion(workflowId); - - if (!isDefined(workflow)) { - return null; - } + const instanceId = getWorkflowVisualizerComponentInstanceId({ + recordId: workflowId, + }); return ( diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramEffect.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramEffect.tsx index 1e868cb504..55182e87ed 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramEffect.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramEffect.tsx @@ -28,9 +28,6 @@ export const WorkflowDiagramEffect = () => { const workflowDiagramState = useRecoilComponentCallbackState( workflowDiagramComponentState, ); - const setWorkflowDiagram = useSetRecoilComponentState( - workflowDiagramComponentState, - ); const setFlow = useSetRecoilComponentState(flowComponentState); const { populateStepsOutputSchema } = useStepsOutputSchema(); @@ -88,8 +85,6 @@ export const WorkflowDiagramEffect = () => { useEffect(() => { if (!isDefined(currentVersion)) { - // setFlow(undefined); - // setWorkflowDiagram(undefined); return; } @@ -100,12 +95,7 @@ export const WorkflowDiagramEffect = () => { }); computeAndMergeNewWorkflowDiagram(currentVersion); - }, [ - computeAndMergeNewWorkflowDiagram, - setFlow, - setWorkflowDiagram, - currentVersion, - ]); + }, [computeAndMergeNewWorkflowDiagram, setFlow, currentVersion]); useEffect(() => { if (!isDefined(currentVersion)) {