From a494a7a9024ca4100fc1eeed59edd8feedb939cd Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Fri, 6 Feb 2026 16:25:09 +0100 Subject: [PATCH] Fix iterator creation (#17763) On iterator creation, we get an error "Bad configuration". Looks like a race condition with generation that happens before apollo cache gets updated. Adding defensive checks --- .../utils/generateNodesAndEdgesForIfElseNode.ts | 2 +- .../utils/generateNodesAndEdgesForIteratorNode.ts | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForIfElseNode.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForIfElseNode.ts index 4af46bee8b..f31c69ce82 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForIfElseNode.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForIfElseNode.ts @@ -66,7 +66,7 @@ export const generateNodesAndEdgesForIfElseNode = ({ updatedNodes.push(ifElseNode); - const branches = step.settings.input.branches; + const branches = step.settings?.input?.branches ?? []; const totalBranches = branches.length; branches.forEach((branch, branchIndex) => { diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForIteratorNode.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForIteratorNode.ts index 4db16bd5a5..d697a363c7 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForIteratorNode.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForIteratorNode.ts @@ -75,12 +75,11 @@ export const generateNodesAndEdgesForIteratorNode = ({ updatedNodes.push(iteratorNode); - const initialLoopStepIds = Array.isArray( - step.settings.input.initialLoopStepIds, - ) - ? step.settings.input.initialLoopStepIds - : isNonEmptyString(step.settings.input.initialLoopStepIds) - ? [step.settings.input.initialLoopStepIds] + const input = step.settings?.input; + const initialLoopStepIds = Array.isArray(input?.initialLoopStepIds) + ? input.initialLoopStepIds + : isNonEmptyString(input?.initialLoopStepIds) + ? [input.initialLoopStepIds] : []; for (const initialLoopStepId of initialLoopStepIds) {