Enable workflow testing + fix header (#8512)
- clean execution header - enable test on workflows + add snack bar - display snack bar error if workflow cannot be tested Behaviour still need to be validated by @Bonapara <img width="880" alt="Capture d’écran 2024-11-15 à 12 16 36" src="https://github.com/user-attachments/assets/1dab0c3b-157c-449f-aee7-4c8cf2e369a6"> <img width="880" alt="Capture d’écran 2024-11-15 à 12 16 48" src="https://github.com/user-attachments/assets/16279611-0a58-4fe6-b117-0192714a6d5c">
This commit is contained in:
@ -1,15 +1,21 @@
|
||||
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
||||
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
||||
import { useActivateWorkflowVersion } from '@/workflow/hooks/useActivateWorkflowVersion';
|
||||
import { useDeactivateWorkflowVersion } from '@/workflow/hooks/useDeactivateWorkflowVersion';
|
||||
import { useDeleteOneWorkflowVersion } from '@/workflow/hooks/useDeleteOneWorkflowVersion';
|
||||
import { useRunWorkflowVersion } from '@/workflow/hooks/useRunWorkflowVersion';
|
||||
import { useWorkflowWithCurrentVersion } from '@/workflow/hooks/useWorkflowWithCurrentVersion';
|
||||
import { useTheme } from '@emotion/react';
|
||||
import {
|
||||
Button,
|
||||
IconPlayerPlay,
|
||||
IconPlayerStop,
|
||||
IconPower,
|
||||
IconSettingsAutomation,
|
||||
IconTrash,
|
||||
isDefined,
|
||||
} from 'twenty-ui';
|
||||
import { capitalize } from '~/utils/string/capitalize';
|
||||
import { assertWorkflowWithCurrentVersionIsDefined } from '../utils/assertWorkflowWithCurrentVersionIsDefined';
|
||||
|
||||
export const RecordShowPageWorkflowHeader = ({
|
||||
@ -26,6 +32,15 @@ export const RecordShowPageWorkflowHeader = ({
|
||||
const { activateWorkflowVersion } = useActivateWorkflowVersion();
|
||||
const { deactivateWorkflowVersion } = useDeactivateWorkflowVersion();
|
||||
const { deleteOneWorkflowVersion } = useDeleteOneWorkflowVersion();
|
||||
const { runWorkflowVersion } = useRunWorkflowVersion();
|
||||
|
||||
const { enqueueSnackBar } = useSnackBar();
|
||||
const theme = useTheme();
|
||||
|
||||
const trigger = workflowWithCurrentVersion?.currentVersion.trigger;
|
||||
|
||||
const canWorkflowBeTested =
|
||||
trigger?.type === 'MANUAL' && !trigger.settings.objectType;
|
||||
|
||||
return (
|
||||
<>
|
||||
@ -34,7 +49,41 @@ export const RecordShowPageWorkflowHeader = ({
|
||||
variant="secondary"
|
||||
Icon={IconPlayerPlay}
|
||||
disabled={isWaitingForWorkflowWithCurrentVersion}
|
||||
onClick={() => {}}
|
||||
onClick={async () => {
|
||||
assertWorkflowWithCurrentVersionIsDefined(workflowWithCurrentVersion);
|
||||
|
||||
if (!canWorkflowBeTested) {
|
||||
enqueueSnackBar(
|
||||
'Trigger type should be Manual - when no record(s) are selected',
|
||||
{
|
||||
variant: SnackBarVariant.Error,
|
||||
title: 'Workflow cannot be tested',
|
||||
icon: (
|
||||
<IconSettingsAutomation
|
||||
size={16}
|
||||
color={theme.snackBar.error.color}
|
||||
/>
|
||||
),
|
||||
},
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
await runWorkflowVersion({
|
||||
workflowVersionId: workflowWithCurrentVersion.currentVersion.id,
|
||||
});
|
||||
|
||||
enqueueSnackBar('', {
|
||||
variant: SnackBarVariant.Success,
|
||||
title: `${capitalize(workflowWithCurrentVersion.name)} starting...`,
|
||||
icon: (
|
||||
<IconSettingsAutomation
|
||||
size={16}
|
||||
color={theme.snackBar.success.color}
|
||||
/>
|
||||
),
|
||||
});
|
||||
}}
|
||||
/>
|
||||
|
||||
{workflowWithCurrentVersion?.currentVersion?.status === 'DRAFT' &&
|
||||
|
||||
@ -82,7 +82,7 @@ export const RecordShowPageWorkflowVersionHeader = ({
|
||||
<>
|
||||
{showUseAsDraftButton ? (
|
||||
<Button
|
||||
title={`Use as Draft${hasAlreadyDraftVersion ? ' (override)' : ''}`}
|
||||
title={'Use as Draft'}
|
||||
variant="secondary"
|
||||
Icon={IconPencil}
|
||||
disabled={isWaitingForWorkflowVersion}
|
||||
|
||||
Reference in New Issue
Block a user