Files
twenty/packages/twenty-front/src/modules/workflow/hooks/useStopWorkflowRun.ts
T
Lucas Bordeau 2cff75d772 Refactored object operation dispatch for SSE (#17174)
This PR refactors object record operation dispatch through a browser
event instead of a state that was registering all operations.

This is a cleaner pattern as it is a synchronous event code path instead
of relying on a useEffect to watch state change, which is not ideal.

We introduce this change first to then rely on this new pattern to
dispatch SSE events in a following PR.
2026-01-15 16:38:21 +00:00

40 lines
1.2 KiB
TypeScript

import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { dispatchObjectRecordOperationBrowserEvent } from '@/object-record/utils/dispatchObjectRecordOperationBrowserEvent';
import { useStopWorkflowRunMutation } from '~/generated-metadata/graphql';
export const useStopWorkflowRun = () => {
const apolloCoreClient = useApolloCoreClient();
const [mutate] = useStopWorkflowRunMutation({
client: apolloCoreClient,
});
const { objectMetadataItem } = useObjectMetadataItem({
objectNameSingular: CoreObjectNameSingular.WorkflowRun,
});
const stopWorkflowRun = async (workflowRunId: string) => {
await mutate({
variables: {
workflowRunId,
},
});
dispatchObjectRecordOperationBrowserEvent({
objectMetadataItem,
operation: {
type: 'update-one',
result: {
updateInput: {
recordId: workflowRunId,
updatedFields: [],
},
},
},
});
};
return { stopWorkflowRun };
};