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

View File

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