In this PR: - Refactored components to clarify their behavior. For example, I renamed the `Workflow` component to `WorkflowVisualizer`. This moved forward the issue #7010. - Create two variants of several workflow-related components: one version for editing and another for viewing. For instance, there is `WorkflowDiagramCanvasEditable.tsx` and `WorkflowDiagramCanvasReadonly.tsx` - Implement the show page for workflow versions. On this page, we display a readonly workflow visualizer. Users can click on nodes and it will expand the right drawer. - I added buttons in the header of the RecordShowPage for workflow versions: users can activate, deactivate or use the currently viewed version as the next draft. **There are many cache desynchronisation and I'll fix them really soon.** ## Demo (Turn sound on) https://github.com/user-attachments/assets/97fafa48-8902-4dab-8b39-f40848bf041e
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
|
import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord';
|
|
import { useCreateNewWorkflowVersion } from '@/workflow/hooks/useCreateNewWorkflowVersion';
|
|
import {
|
|
WorkflowTrigger,
|
|
WorkflowVersion,
|
|
WorkflowWithCurrentVersion,
|
|
} from '@/workflow/types/Workflow';
|
|
import { isDefined } from 'twenty-ui';
|
|
|
|
export const useUpdateWorkflowVersionTrigger = ({
|
|
workflow,
|
|
}: {
|
|
workflow: WorkflowWithCurrentVersion;
|
|
}) => {
|
|
const { updateOneRecord: updateOneWorkflowVersion } =
|
|
useUpdateOneRecord<WorkflowVersion>({
|
|
objectNameSingular: CoreObjectNameSingular.WorkflowVersion,
|
|
});
|
|
|
|
const { createNewWorkflowVersion } = useCreateNewWorkflowVersion();
|
|
|
|
const updateTrigger = async (updatedTrigger: WorkflowTrigger) => {
|
|
if (!isDefined(workflow.currentVersion)) {
|
|
throw new Error('Can not update an undefined workflow version.');
|
|
}
|
|
|
|
if (workflow.currentVersion.status === 'DRAFT') {
|
|
await updateOneWorkflowVersion({
|
|
idToUpdate: workflow.currentVersion.id,
|
|
updateOneRecordInput: {
|
|
trigger: updatedTrigger,
|
|
},
|
|
});
|
|
|
|
return;
|
|
}
|
|
|
|
await createNewWorkflowVersion({
|
|
workflowId: workflow.id,
|
|
name: `v${workflow.versions.length + 1}`,
|
|
status: 'DRAFT',
|
|
trigger: updatedTrigger,
|
|
steps: workflow.currentVersion.steps,
|
|
});
|
|
};
|
|
|
|
return {
|
|
updateTrigger,
|
|
};
|
|
};
|