Baptiste Devessier
2025-07-23 14:52:59 +02:00
committed by GitHub
parent e34ac2967c
commit 6d3643bb4a
2 changed files with 21 additions and 16 deletions

View File

@ -1,5 +1,4 @@
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
import { useSetRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentStateV2';
import { useWorkflowWithCurrentVersion } from '@/workflow/hooks/useWorkflowWithCurrentVersion';
import { workflowVisualizerWorkflowIdComponentState } from '@/workflow/states/workflowVisualizerWorkflowIdComponentState';
import { assertWorkflowWithCurrentVersionIsDefined } from '@/workflow/utils/assertWorkflowWithCurrentVersionIsDefined';
@ -7,8 +6,8 @@ import { WorkflowDiagramEdgeV2Container } from '@/workflow/workflow-diagram/comp
import { WorkflowDiagramEdgeV2VisibilityContainer } from '@/workflow/workflow-diagram/components/WorkflowDiagramEdgeV2VisibilityContainer';
import { CREATE_STEP_NODE_WIDTH } from '@/workflow/workflow-diagram/constants/CreateStepNodeWidth';
import { WORKFLOW_DIAGRAM_EDGE_OPTIONS_CLICK_OUTSIDE_ID } from '@/workflow/workflow-diagram/constants/WorkflowDiagramEdgeOptionsClickOutsideId';
import { useOpenWorkflowEditFilterInCommandMenu } from '@/workflow/workflow-diagram/hooks/useOpenWorkflowEditFilterInCommandMenu';
import { useStartNodeCreation } from '@/workflow/workflow-diagram/hooks/useStartNodeCreation';
import { workflowSelectedNodeComponentState } from '@/workflow/workflow-diagram/states/workflowSelectedNodeComponentState';
import { WorkflowDiagramEdge } from '@/workflow/workflow-diagram/types/WorkflowDiagram';
import { useCreateStep } from '@/workflow/workflow-steps/hooks/useCreateStep';
import { workflowInsertStepIdsComponentState } from '@/workflow/workflow-steps/states/workflowInsertStepIdsComponentState';
@ -21,6 +20,7 @@ import {
getStraightPath,
} from '@xyflow/react';
import { useState } from 'react';
import { isDefined } from 'twenty-shared/utils';
import { IconFilter, IconPlus } from 'twenty-ui/display';
import { IconButtonGroup } from 'twenty-ui/input';
@ -66,26 +66,28 @@ export const WorkflowDiagramDefaultEdgeEditable = ({
workflowInsertStepIds.nextStepId === target &&
workflowInsertStepIds.parentStepId === source;
const { openWorkflowEditFilterInCommandMenu } =
useOpenWorkflowEditFilterInCommandMenu();
const handleCreateFilter = async () => {
await createStep({
const createdStep = await createStep({
newStepType: 'FILTER',
parentStepId: source,
nextStepId: target,
});
if (!isDefined(createdStep)) {
return;
}
openWorkflowEditFilterInCommandMenu({
stepId: createdStep.id,
stepName: createdStep.name,
});
setHovered(false);
};
const setWorkflowSelectedNode = useSetRecoilComponentStateV2(
workflowSelectedNodeComponentState,
);
const handleFilterButtonClick = () => {
setWorkflowSelectedNode(source);
handleCreateFilter();
};
const handleNodeButtonClick = () => {
startNodeCreation({
parentStepId: source,
@ -118,7 +120,7 @@ export const WorkflowDiagramDefaultEdgeEditable = ({
iconButtons={[
{
Icon: IconFilter,
onClick: handleFilterButtonClick,
onClick: handleCreateFilter,
},
{
Icon: IconPlus,

View File

@ -8,6 +8,7 @@ import {
import { workflowSelectedNodeComponentState } from '@/workflow/workflow-diagram/states/workflowSelectedNodeComponentState';
import { useCreateWorkflowVersionStep } from '@/workflow/workflow-steps/hooks/useCreateWorkflowVersionStep';
import { useState } from 'react';
import { isDefined } from 'twenty-shared/utils';
export const useCreateStep = ({
workflow,
@ -52,12 +53,14 @@ export const useCreateStep = ({
})
)?.data?.createWorkflowVersionStep;
if (!createdStep) {
return;
if (!isDefined(createdStep)) {
throw new Error("Couldn't create step");
}
setWorkflowSelectedNode(createdStep.id);
setWorkflowLastCreatedStepId(createdStep.id);
return createdStep;
} finally {
setIsLoading(false);
}