From 5b7b58c85f3dd9ee4d3d37e702008ba275c83cfe Mon Sep 17 00:00:00 2001 From: Baptiste Devessier Date: Fri, 14 Mar 2025 18:33:19 +0100 Subject: [PATCH] Remove dead code about workflow leaf nodes (#10901) Leaf nodes is no longer a concept in the workflow diagrams. This PR removes dead code. Closes https://github.com/twentyhq/core-team-issues/issues/386 --- .../components/WorkflowDiagramEffect.tsx | 5 +- .../WorkflowDiagramEmptyTrigger.tsx | 8 +-- .../WorkflowDiagramStepNodeBase.tsx | 6 +- ...WorkflowDiagramStepNodeEditableContent.tsx | 1 - .../WorkflowDiagramStepNodeReadonly.tsx | 1 - .../WorkflowVersionVisualizerEffect.tsx | 5 +- .../WorkflowDiagramCustomMarkers.stories.tsx | 4 -- .../WorkflowDiagramEmptyTrigger.stories.tsx | 19 ----- ...DiagramStepNodeEditableContent.stories.tsx | 26 ------- ...rkflowDiagramEmptyTriggerNodeDefinition.ts | 1 - .../workflow-diagram/types/WorkflowDiagram.ts | 4 -- .../__tests__/generateWorkflowDiagram.test.ts | 2 - .../generateWorkflowRunDiagram.test.ts | 17 ----- .../getWorkflowVersionDiagram.test.ts | 4 -- .../utils/__tests__/markLeafNodes.test.ts | 69 ------------------- .../__tests__/mergeWorkflowDiagrams.test.ts | 6 -- .../utils/generateWorkflowDiagram.ts | 1 - .../utils/generateWorkflowRunDiagram.ts | 1 - .../utils/getWorkflowDiagramTriggerNode.ts | 1 - .../workflow-diagram/utils/markLeafNodes.ts | 31 --------- 20 files changed, 5 insertions(+), 207 deletions(-) delete mode 100644 packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/markLeafNodes.test.ts delete mode 100644 packages/twenty-front/src/modules/workflow/workflow-diagram/utils/markLeafNodes.ts 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 dbc6de715..022f3800e 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 @@ -10,7 +10,6 @@ import { workflowDiagramState } from '@/workflow/workflow-diagram/states/workflo import { addCreateStepNodes } from '@/workflow/workflow-diagram/utils/addCreateStepNodes'; import { getWorkflowVersionDiagram } from '@/workflow/workflow-diagram/utils/getWorkflowVersionDiagram'; -import { markLeafNodes } from '@/workflow/workflow-diagram/utils/markLeafNodes'; import { mergeWorkflowDiagrams } from '@/workflow/workflow-diagram/utils/mergeWorkflowDiagrams'; import { useEffect } from 'react'; import { useRecoilCallback, useSetRecoilState } from 'recoil'; @@ -33,8 +32,8 @@ export const WorkflowDiagramEffect = ({ workflowDiagramState, ); - const nextWorkflowDiagram = markLeafNodes( - addCreateStepNodes(getWorkflowVersionDiagram(currentVersion)), + const nextWorkflowDiagram = addCreateStepNodes( + getWorkflowVersionDiagram(currentVersion), ); let mergedWorkflowDiagram = nextWorkflowDiagram; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramEmptyTrigger.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramEmptyTrigger.tsx index da814e224..dd1528b8f 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramEmptyTrigger.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramEmptyTrigger.tsx @@ -1,5 +1,4 @@ import { WorkflowDiagramStepNodeBase } from '@/workflow/workflow-diagram/components/WorkflowDiagramStepNodeBase'; -import { WorkflowDiagramEmptyTriggerNodeData } from '@/workflow/workflow-diagram/types/WorkflowDiagram'; import styled from '@emotion/styled'; const StyledStepNodeLabelIconContainer = styled.div` @@ -11,18 +10,13 @@ const StyledStepNodeLabelIconContainer = styled.div` padding: ${({ theme }) => theme.spacing(3)}; `; -export const WorkflowDiagramEmptyTrigger = ({ - data, -}: { - data: WorkflowDiagramEmptyTriggerNodeData; -}) => { +export const WorkflowDiagramEmptyTrigger = () => { return ( } - isLeafNode={data.isLeafNode} /> ); }; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeBase.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeBase.tsx index 4f38382eb..11e5bd480 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeBase.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeBase.tsx @@ -194,14 +194,12 @@ export const WorkflowDiagramStepNodeBase = ({ variant, Icon, RightFloatingElement, - isLeafNode, }: { nodeType: WorkflowDiagramStepNodeData['nodeType']; name: string; variant: WorkflowDiagramNodeVariant; Icon?: React.ReactNode; RightFloatingElement?: React.ReactNode; - isLeafNode: boolean; }) => { return ( @@ -227,9 +225,7 @@ export const WorkflowDiagramStepNodeBase = ({ ) : null} - {!isLeafNode && ( - - )} + ); }; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeEditableContent.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeEditableContent.tsx index 4b33887c1..ff03ef61d 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeEditableContent.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeEditableContent.tsx @@ -30,7 +30,6 @@ export const WorkflowDiagramStepNodeEditableContent = ({ /> ) : undefined } - isLeafNode={data.isLeafNode} /> ); }; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeReadonly.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeReadonly.tsx index b6f76cd90..38a6d16ac 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeReadonly.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeReadonly.tsx @@ -34,7 +34,6 @@ export const WorkflowDiagramStepNodeReadonly = ({ variant={getNodeVariantFromRunStatus(data.runStatus)} nodeType={data.nodeType} Icon={} - isLeafNode={data.isLeafNode} /> ); }; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowVersionVisualizerEffect.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowVersionVisualizerEffect.tsx index b1b673304..6db6572ca 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowVersionVisualizerEffect.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowVersionVisualizerEffect.tsx @@ -3,7 +3,6 @@ import { useWorkflowVersion } from '@/workflow/hooks/useWorkflowVersion'; import { flowState } from '@/workflow/states/flowState'; import { workflowDiagramState } from '@/workflow/workflow-diagram/states/workflowDiagramState'; import { getWorkflowVersionDiagram } from '@/workflow/workflow-diagram/utils/getWorkflowVersionDiagram'; -import { markLeafNodes } from '@/workflow/workflow-diagram/utils/markLeafNodes'; import { useEffect } from 'react'; import { useSetRecoilState } from 'recoil'; import { isDefined } from 'twenty-shared'; @@ -39,9 +38,7 @@ export const WorkflowVersionVisualizerEffect = ({ return; } - const nextWorkflowDiagram = markLeafNodes( - getWorkflowVersionDiagram(workflowVersion), - ); + const nextWorkflowDiagram = getWorkflowVersionDiagram(workflowVersion); setWorkflowDiagram(nextWorkflowDiagram); }, [setWorkflowDiagram, workflowVersion]); diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramCustomMarkers.stories.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramCustomMarkers.stories.tsx index ef15e5e7d..8bb3f74b9 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramCustomMarkers.stories.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramCustomMarkers.stories.tsx @@ -64,7 +64,6 @@ export const DefaultEdge: Story = { nodeType: 'trigger', triggerType: 'DATABASE_EVENT', name: 'When record is created', - isLeafNode: false, }, }, { @@ -75,7 +74,6 @@ export const DefaultEdge: Story = { nodeType: 'action', actionType: 'CREATE_RECORD', name: 'Create record', - isLeafNode: false, }, }, { @@ -139,7 +137,6 @@ export const SuccessEdge: Story = { nodeType: 'trigger', triggerType: 'DATABASE_EVENT', name: 'When record is created', - isLeafNode: false, }, }, { @@ -150,7 +147,6 @@ export const SuccessEdge: Story = { nodeType: 'action', actionType: 'CREATE_RECORD', name: 'Create record', - isLeafNode: false, }, }, ], diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramEmptyTrigger.stories.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramEmptyTrigger.stories.tsx index eee78f2b3..d4d6a9f38 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramEmptyTrigger.stories.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramEmptyTrigger.stories.tsx @@ -11,7 +11,6 @@ const meta: Meta = { args: { data: { nodeType: 'empty-trigger', - isLeafNode: true, }, }, }; @@ -42,21 +41,3 @@ export const Selected: Story = { ComponentDecorator, ], }; - -export const IsNotLeafNode: Story = { - decorators: [ - (Story) => ( -
- -
- ), - ComponentDecorator, - ReactflowDecorator, - ], - args: { - data: { - nodeType: 'empty-trigger', - isLeafNode: false, - }, - }, -}; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramStepNodeEditableContent.stories.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramStepNodeEditableContent.stories.tsx index efbe74129..836f900da 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramStepNodeEditableContent.stories.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/__stories__/WorkflowDiagramStepNodeEditableContent.stories.tsx @@ -37,43 +37,36 @@ const ALL_STEPS = [ nodeType: 'trigger', triggerType: 'DATABASE_EVENT', name: 'Record is Created', - isLeafNode: true, }, { nodeType: 'trigger', triggerType: 'MANUAL', name: 'Manual', - isLeafNode: true, }, { nodeType: 'action', actionType: 'CREATE_RECORD', name: 'Create Record', - isLeafNode: true, }, { nodeType: 'action', actionType: 'UPDATE_RECORD', name: 'Update Record', - isLeafNode: true, }, { nodeType: 'action', actionType: 'DELETE_RECORD', name: 'Delete Record', - isLeafNode: true, }, { nodeType: 'action', actionType: 'SEND_EMAIL', name: 'Send Email', - isLeafNode: true, }, { nodeType: 'action', actionType: 'CODE', name: 'Code', - isLeafNode: true, }, ] satisfies WorkflowDiagramStepNodeData[]; @@ -130,22 +123,3 @@ export const Catalog: CatalogStory = { ReactflowDecorator, ], }; - -export const IsNotLeafNode: Story = { - args: { - data: { - ...ALL_STEPS[0], - isLeafNode: false, - }, - state: 'default', - variant: 'default', - }, - decorators: [ - (Story) => ( -
- -
- ), - ReactflowDecorator, - ], -}; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/constants/WorkflowDiagramEmptyTriggerNodeDefinition.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/constants/WorkflowDiagramEmptyTriggerNodeDefinition.ts index bd0d179eb..f14241bcb 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/constants/WorkflowDiagramEmptyTriggerNodeDefinition.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/constants/WorkflowDiagramEmptyTriggerNodeDefinition.ts @@ -7,7 +7,6 @@ export const WORKFLOW_DIAGRAM_EMPTY_TRIGGER_NODE_DEFINITION = { type: 'empty-trigger', data: { nodeType: 'empty-trigger', - isLeafNode: false, } satisfies WorkflowDiagramEmptyTriggerNodeData, position: { x: 0, diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/types/WorkflowDiagram.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/types/WorkflowDiagram.ts index 7828bc5b8..d3488c8b0 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/types/WorkflowDiagram.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/types/WorkflowDiagram.ts @@ -33,25 +33,21 @@ export type WorkflowDiagramStepNodeData = name: string; icon?: string; runStatus?: WorkflowDiagramRunStatus; - isLeafNode: boolean; } | { nodeType: 'action'; actionType: WorkflowActionType; name: string; runStatus?: WorkflowDiagramRunStatus; - isLeafNode: boolean; }; export type WorkflowDiagramCreateStepNodeData = { nodeType: 'create-step'; parentNodeId: string; - isLeafNode?: never; }; export type WorkflowDiagramEmptyTriggerNodeData = { nodeType: 'empty-trigger'; - isLeafNode: boolean; }; export type WorkflowDiagramNodeData = diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowDiagram.test.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowDiagram.test.ts index c6cce3d8b..1ec663b34 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowDiagram.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowDiagram.test.ts @@ -21,7 +21,6 @@ describe('generateWorkflowDiagram', () => { expect(result.nodes[0]).toMatchObject({ data: { nodeType: 'trigger', - isLeafNode: false, }, }); }); @@ -88,7 +87,6 @@ describe('generateWorkflowDiagram', () => { nodeType: 'action', actionType: 'CODE', name: step.name, - isLeafNode: false, }); } }); diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowRunDiagram.test.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowRunDiagram.test.ts index 4fef5c445..47c793c7a 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowRunDiagram.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowRunDiagram.test.ts @@ -121,7 +121,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "icon": "IconPlaylistAdd", - "isLeafNode": false, "name": "Company created", "nodeType": "trigger", "runStatus": "success", @@ -136,7 +135,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 1", "nodeType": "action", "runStatus": "failure", @@ -150,7 +148,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 2", "nodeType": "action", "runStatus": "not-executed", @@ -164,7 +161,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 3", "nodeType": "action", "runStatus": "not-executed", @@ -300,7 +296,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "icon": "IconPlaylistAdd", - "isLeafNode": false, "name": "Company created", "nodeType": "trigger", "runStatus": "success", @@ -315,7 +310,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 1", "nodeType": "action", "runStatus": "success", @@ -329,7 +323,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 2", "nodeType": "action", "runStatus": "success", @@ -343,7 +336,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 3", "nodeType": "action", "runStatus": "success", @@ -464,7 +456,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "icon": "IconPlaylistAdd", - "isLeafNode": false, "name": "Company created", "nodeType": "trigger", "runStatus": "success", @@ -479,7 +470,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 1", "nodeType": "action", "runStatus": "running", @@ -493,7 +483,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 2", "nodeType": "action", "runStatus": "not-executed", @@ -507,7 +496,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 3", "nodeType": "action", "runStatus": "not-executed", @@ -661,7 +649,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "icon": "IconPlaylistAdd", - "isLeafNode": false, "name": "Company created", "nodeType": "trigger", "runStatus": "success", @@ -676,7 +663,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 1", "nodeType": "action", "runStatus": "success", @@ -690,7 +676,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 2", "nodeType": "action", "runStatus": "running", @@ -704,7 +689,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 3", "nodeType": "action", "runStatus": "not-executed", @@ -718,7 +702,6 @@ describe('generateWorkflowRunDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "Step 4", "nodeType": "action", "runStatus": "not-executed", diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/getWorkflowVersionDiagram.test.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/getWorkflowVersionDiagram.test.ts index d49ecc104..8fd72cd22 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/getWorkflowVersionDiagram.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/getWorkflowVersionDiagram.test.ts @@ -36,7 +36,6 @@ describe('getWorkflowVersionDiagram', () => { "nodes": [ { "data": { - "isLeafNode": false, "nodeType": "empty-trigger", }, "id": "trigger", @@ -75,7 +74,6 @@ describe('getWorkflowVersionDiagram', () => { { "data": { "icon": "IconPlaylistAdd", - "isLeafNode": false, "name": "Record is created", "nodeType": "trigger", "triggerType": "DATABASE_EVENT", @@ -144,7 +142,6 @@ describe('getWorkflowVersionDiagram', () => { { "data": { "icon": "IconPlaylistAdd", - "isLeafNode": false, "name": "Company created", "nodeType": "trigger", "triggerType": "DATABASE_EVENT", @@ -158,7 +155,6 @@ describe('getWorkflowVersionDiagram', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "", "nodeType": "action", }, diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/markLeafNodes.test.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/markLeafNodes.test.ts deleted file mode 100644 index ae5034609..000000000 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/markLeafNodes.test.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { WorkflowStep, WorkflowTrigger } from '@/workflow/types/Workflow'; -import { generateWorkflowDiagram } from '@/workflow/workflow-diagram/utils/generateWorkflowDiagram'; -import { markLeafNodes } from '../markLeafNodes'; - -describe('markLeafNodes', () => { - const createTrigger = (): WorkflowTrigger => ({ - name: 'Company created', - type: 'DATABASE_EVENT', - settings: { - eventName: 'company.created', - outputSchema: {}, - }, - }); - - const createStep = (id: string): WorkflowStep => ({ - id, - name: `Step ${id}`, - type: 'CODE', - valid: true, - settings: { - errorHandlingOptions: { - retryOnFailure: { value: true }, - continueOnFailure: { value: false }, - }, - input: { - serverlessFunctionId: 'a5434be2-c10b-465c-acec-46492782a997', - serverlessFunctionVersion: '1', - serverlessFunctionInput: {}, - }, - outputSchema: {}, - }, - }); - - it('handles empty workflow with only trigger', () => { - const trigger = createTrigger(); - const steps: WorkflowStep[] = []; - - const diagram = generateWorkflowDiagram({ trigger, steps }); - const diagramWithLeafNodes = markLeafNodes(diagram); - - expect(diagramWithLeafNodes.nodes).toHaveLength(1); - expect(diagramWithLeafNodes.nodes[0].data.isLeafNode).toBe(true); - }); - - it('handles workflow with single step', () => { - const trigger = createTrigger(); - const steps = [createStep('step1')]; - - const diagram = generateWorkflowDiagram({ trigger, steps }); - const diagramWithLeafNodes = markLeafNodes(diagram); - - expect(diagramWithLeafNodes.nodes).toHaveLength(2); - expect(diagramWithLeafNodes.nodes[0].data.isLeafNode).toBe(false); - expect(diagramWithLeafNodes.nodes[1].data.isLeafNode).toBe(true); - }); - - it('handles workflow with two steps', () => { - const trigger = createTrigger(); - const steps = [createStep('step1'), createStep('step2')]; - - const diagram = generateWorkflowDiagram({ trigger, steps }); - const diagramWithLeafNodes = markLeafNodes(diagram); - - expect(diagramWithLeafNodes.nodes).toHaveLength(3); - expect(diagramWithLeafNodes.nodes[0].data.isLeafNode).toBe(false); - expect(diagramWithLeafNodes.nodes[1].data.isLeafNode).toBe(false); - expect(diagramWithLeafNodes.nodes[2].data.isLeafNode).toBe(true); - }); -}); diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/mergeWorkflowDiagrams.test.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/mergeWorkflowDiagrams.test.ts index ab3da4c88..20d7fe45b 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/mergeWorkflowDiagrams.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/mergeWorkflowDiagrams.test.ts @@ -9,7 +9,6 @@ it('Preserves the properties defined in the previous version but not in the next nodeType: 'action', name: '', actionType: 'CODE', - isLeafNode: true, }, id: '1', position: { x: 0, y: 0 }, @@ -25,7 +24,6 @@ it('Preserves the properties defined in the previous version but not in the next nodeType: 'action', name: '', actionType: 'CODE', - isLeafNode: true, }, id: '1', position: { x: 0, y: 0 }, @@ -42,7 +40,6 @@ it('Preserves the properties defined in the previous version but not in the next { "data": { "actionType": "CODE", - "isLeafNode": true, "name": "", "nodeType": "action", }, @@ -66,7 +63,6 @@ it('Replaces duplicated properties with the next value', () => { nodeType: 'action', name: '', actionType: 'CODE', - isLeafNode: true, }, id: '1', position: { x: 0, y: 0 }, @@ -81,7 +77,6 @@ it('Replaces duplicated properties with the next value', () => { nodeType: 'action', name: '2', actionType: 'CODE', - isLeafNode: false, }, id: '1', position: { x: 0, y: 0 }, @@ -98,7 +93,6 @@ it('Replaces duplicated properties with the next value', () => { { "data": { "actionType": "CODE", - "isLeafNode": false, "name": "2", "nodeType": "action", }, diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts index 9219e90a8..58f3f8c83 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts @@ -55,7 +55,6 @@ export const generateWorkflowDiagram = ({ nodeType: 'action', actionType: step.type, name: step.name, - isLeafNode: false, } satisfies WorkflowDiagramStepNodeData, position: { x: xPos, diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowRunDiagram.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowRunDiagram.ts index 478204010..d750a64b6 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowRunDiagram.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowRunDiagram.ts @@ -99,7 +99,6 @@ export const generateWorkflowRunDiagram = ({ nodeType: 'action', actionType: step.type, name: step.name, - isLeafNode: false, runStatus, }, position: { diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/getWorkflowDiagramTriggerNode.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/getWorkflowDiagramTriggerNode.ts index 103449dc5..159742d3a 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/getWorkflowDiagramTriggerNode.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/getWorkflowDiagramTriggerNode.ts @@ -64,7 +64,6 @@ export const getWorkflowDiagramTriggerNode = ({ triggerType: trigger.type, name: isDefined(trigger.name) ? trigger.name : triggerDefaultLabel, icon: triggerIcon, - isLeafNode: false, } satisfies WorkflowDiagramStepNodeData, position: { x: 0, diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/markLeafNodes.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/markLeafNodes.ts deleted file mode 100644 index 3582e1ba3..000000000 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/markLeafNodes.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { - WorkflowDiagram, - WorkflowDiagramNode, -} from '@/workflow/workflow-diagram/types/WorkflowDiagram'; -import { isCreateStepNode } from '@/workflow/workflow-diagram/utils/isCreateStepNode'; - -export const markLeafNodes = ({ - nodes, - edges, -}: WorkflowDiagram): WorkflowDiagram => { - const sourceNodeIds = new Set(edges.map((edge) => edge.source)); - - const updatedNodes = nodes.map((node) => { - if (isCreateStepNode(node)) { - return node; - } - - return { - ...node, - data: { - ...node.data, - isLeafNode: !sourceNodeIds.has(node.id), - }, - }; - }); - - return { - nodes: updatedNodes as WorkflowDiagramNode[], - edges, - }; -};