Trigger refetch workflow on version creation (#17685)

https://github.com/user-attachments/assets/ec156aba-3a67-4eef-addf-86158c3f1837
This commit is contained in:
Thomas Trompette
2026-02-03 18:52:30 +01:00
committed by GitHub
parent fdd3e6d245
commit c18f574aee
4 changed files with 70 additions and 16 deletions
@@ -1,5 +1,9 @@
import { useEffect } from 'react';
import { useRecoilState } from 'recoil';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord';
import { shouldWorkflowRefetchRequestFamilyState } from '@/workflow/states/shouldWorkflowRefetchRequestFamilyState';
import {
type Workflow,
type WorkflowVersion,
@@ -16,23 +20,38 @@ type WorkflowWithAllVersions = Omit<Workflow, 'versions'> & {
export const useWorkflowWithCurrentVersion = (
workflowId: string | undefined,
): WorkflowWithCurrentVersion | undefined => {
const { record: workflow } = useFindOneRecord<WorkflowWithAllVersions>({
objectNameSingular: CoreObjectNameSingular.Workflow,
objectRecordId: workflowId,
recordGqlFields: {
id: true,
name: true,
statuses: true,
lastPublishedVersionId: true,
versions: {
const [shouldWorkflowRefetchRequest, setShouldWorkflowRefetchRequest] =
useRecoilState(shouldWorkflowRefetchRequestFamilyState(workflowId ?? ''));
const { record: workflow, refetch: refetchWorkflow } =
useFindOneRecord<WorkflowWithAllVersions>({
objectNameSingular: CoreObjectNameSingular.Workflow,
objectRecordId: workflowId,
recordGqlFields: {
id: true,
status: true,
name: true,
createdAt: true,
statuses: true,
lastPublishedVersionId: true,
versions: {
id: true,
status: true,
name: true,
createdAt: true,
},
},
},
skip: !isDefined(workflowId),
});
skip: !isDefined(workflowId),
});
useEffect(() => {
if (shouldWorkflowRefetchRequest) {
setShouldWorkflowRefetchRequest(false);
refetchWorkflow();
}
}, [
shouldWorkflowRefetchRequest,
setShouldWorkflowRefetchRequest,
refetchWorkflow,
]);
const draftVersion = workflow?.versions.find(
(workflowVersion) => workflowVersion.status === 'DRAFT',