Files
twenty/packages/twenty-front/src/modules/workflow/components/WorkflowEffect.tsx
T
Baptiste Devessier e9f8e6e718 Display tag for workflow version status (#6972)
- Move where we fetch workflow data. We now fetch them in the `Workflow`
component directly. That's useful to access it in the
`WorkflowShowPageEffect` and `WorkflowDiagramCanvas` components.

![CleanShot 2024-09-10 at 16 27
53@2x](https://github.com/user-attachments/assets/7d30f407-31ab-472c-a096-c525042c0f35)
2024-09-13 11:25:07 +02:00

43 lines
1.4 KiB
TypeScript

import { workflowDiagramState } from '@/workflow/states/workflowDiagramState';
import { workflowIdState } from '@/workflow/states/workflowIdState';
import { WorkflowWithCurrentVersion } from '@/workflow/types/Workflow';
import { addCreateStepNodes } from '@/workflow/utils/addCreateStepNodes';
import { getWorkflowVersionDiagram } from '@/workflow/utils/getWorkflowVersionDiagram';
import { useEffect } from 'react';
import { useSetRecoilState } from 'recoil';
import { isDefined } from 'twenty-ui';
type WorkflowEffectProps = {
workflowId: string;
workflowWithCurrentVersion: WorkflowWithCurrentVersion | undefined;
};
export const WorkflowEffect = ({
workflowId,
workflowWithCurrentVersion,
}: WorkflowEffectProps) => {
const setWorkflowId = useSetRecoilState(workflowIdState);
const setWorkflowDiagram = useSetRecoilState(workflowDiagramState);
useEffect(() => {
setWorkflowId(workflowId);
}, [setWorkflowId, workflowId]);
useEffect(() => {
const currentVersion = workflowWithCurrentVersion?.currentVersion;
if (!isDefined(currentVersion)) {
setWorkflowDiagram(undefined);
return;
}
const lastWorkflowDiagram = getWorkflowVersionDiagram(currentVersion);
const workflowDiagramWithCreateStepNodes =
addCreateStepNodes(lastWorkflowDiagram);
setWorkflowDiagram(workflowDiagramWithCreateStepNodes);
}, [setWorkflowDiagram, workflowWithCurrentVersion?.currentVersion]);
return null;
};