Files
twenty/packages/twenty-front/src/modules/workflow/hooks/useRunWorkflowVersion.tsx
Thomas Trompette 7ec48b93eb Use main apollo client for workflows (#9675)
We were using metadata client by legacy. Architecture is not great for
Core engine: workflows are available both in data and metadata client.
It makes more sense to use the data client since workflows are part of
standard objects
2025-01-16 15:21:29 +01:00

52 lines
1.4 KiB
TypeScript

import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
import { RUN_WORKFLOW_VERSION } from '@/workflow/graphql/mutations/runWorkflowVersion';
import { useApolloClient, useMutation } from '@apollo/client';
import { useTheme } from '@emotion/react';
import { capitalize } from 'twenty-shared';
import { IconSettingsAutomation } from 'twenty-ui';
import {
RunWorkflowVersionMutation,
RunWorkflowVersionMutationVariables,
} from '~/generated/graphql';
export const useRunWorkflowVersion = () => {
const apolloClient = useApolloClient();
const [mutate] = useMutation<
RunWorkflowVersionMutation,
RunWorkflowVersionMutationVariables
>(RUN_WORKFLOW_VERSION, {
client: apolloClient,
});
const { enqueueSnackBar } = useSnackBar();
const theme = useTheme();
const runWorkflowVersion = async ({
workflowVersionId,
workflowName,
payload,
}: {
workflowVersionId: string;
workflowName: string;
payload?: Record<string, any>;
}) => {
await mutate({
variables: { input: { workflowVersionId, payload } },
});
enqueueSnackBar(`${capitalize(workflowName)} starting...`, {
variant: SnackBarVariant.Success,
icon: (
<IconSettingsAutomation
size={16}
color={theme.snackBar.success.color}
/>
),
});
};
return { runWorkflowVersion };
};