Skip to content

Commit fd5baf1

Browse files
committed
3923 client - Add polling for workflow execution status in sheets
1 parent ce47cf4 commit fd5baf1

File tree

4 files changed

+48
-4
lines changed

4 files changed

+48
-4
lines changed

client/src/ee/pages/embedded/workflow-executions/components/workflow-execution-sheet/WorkflowExecutionSheet.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@ import WorkflowExecutionSheetWorkflowPanel from '@/ee/pages/embedded/workflow-ex
55
import {useGetComponentDefinitionsQuery} from '@/ee/shared/queries/embedded/componentDefinitions.queries';
66
import {useGetIntegrationWorkflowExecutionQuery} from '@/ee/shared/queries/embedded/workflowExecutions.queries';
77
import {WorkflowReadOnlyProvider} from '@/pages/platform/workflow-editor/providers/workflowEditorProvider';
8-
import {useCallback} from 'react';
8+
import {getWorkflowStatusType} from '@/shared/components/workflow-executions/util/workflowExecution-utils';
9+
import {useCallback, useMemo} from 'react';
910
import {useShallow} from 'zustand/react/shallow';
1011

1112
import useWorkflowExecutionSheetStore from '../../stores/useWorkflowExecutionSheetStore';
1213
import WorkflowExecutionSheetContent from './WorkflowExecutionSheetContent';
1314

15+
const POLLING_INTERVAL_MS = 2000;
16+
1417
const WorkflowExecutionSheet = () => {
1518
const {setWorkflowExecutionSheetOpen, workflowExecutionId, workflowExecutionSheetOpen} =
1619
useWorkflowExecutionSheetStore(
@@ -28,6 +31,20 @@ const WorkflowExecutionSheet = () => {
2831
workflowExecutionSheetOpen
2932
);
3033

34+
const isWorkflowRunning = useMemo(() => {
35+
if (!workflowExecution?.job) {
36+
return false;
37+
}
38+
39+
return getWorkflowStatusType(workflowExecution.job, workflowExecution.triggerExecution) === 'running';
40+
}, [workflowExecution]);
41+
42+
useGetIntegrationWorkflowExecutionQuery(
43+
{id: workflowExecutionId},
44+
workflowExecutionSheetOpen && isWorkflowRunning,
45+
POLLING_INTERVAL_MS
46+
);
47+
3148
const handleOpenChange = useCallback(() => {
3249
setWorkflowExecutionSheetOpen(!workflowExecutionSheetOpen);
3350
}, [workflowExecutionSheetOpen, setWorkflowExecutionSheetOpen]);

client/src/ee/shared/queries/embedded/workflowExecutions.queries.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,14 @@ export const useGetIntegrationWorkflowExecutionsQuery = (request: GetWorkflowExe
2424
queryFn: () => new WorkflowExecutionApi().getWorkflowExecutionsPage(request),
2525
});
2626

27-
export const useGetIntegrationWorkflowExecutionQuery = (request: GetWorkflowExecutionRequest, isEnabled: boolean) =>
27+
export const useGetIntegrationWorkflowExecutionQuery = (
28+
request: GetWorkflowExecutionRequest,
29+
isEnabled: boolean,
30+
refetchInterval?: number | false
31+
) =>
2832
useQuery<WorkflowExecution, Error>({
2933
queryKey: WorkflowExecutionKeys.workflowExecution(request.id),
3034
queryFn: () => new WorkflowExecutionApi().getWorkflowExecution(request),
3135
enabled: isEnabled,
36+
refetchInterval,
3237
});

client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/WorkflowExecutionSheet.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,20 @@ import {ResizableHandle, ResizablePanel, ResizablePanelGroup} from '@/components
22
import {Sheet, SheetCloseButton, SheetContent, SheetTitle} from '@/components/ui/sheet';
33
import {Spinner} from '@/components/ui/spinner';
44
import {WorkflowReadOnlyProvider} from '@/pages/platform/workflow-editor/providers/workflowEditorProvider';
5+
import {getWorkflowStatusType} from '@/shared/components/workflow-executions/util/workflowExecution-utils';
56
import {useGetComponentDefinitionsQuery} from '@/shared/queries/automation/componentDefinitions.queries';
67
import {useGetProjectWorkflowExecutionQuery} from '@/shared/queries/automation/workflowExecutions.queries';
78
import {WorkflowIcon} from 'lucide-react';
89
import {VisuallyHidden} from 'radix-ui';
9-
import {useCallback} from 'react';
10+
import {useCallback, useMemo} from 'react';
1011
import {useShallow} from 'zustand/react/shallow';
1112

1213
import useWorkflowExecutionSheetStore from '../../stores/useWorkflowExecutionSheetStore';
1314
import WorkflowExecutionSheetContent from './WorkflowExecutionSheetContent';
1415
import WorkflowExecutionSheetWorkflowPanel from './WorkflowExecutionSheetWorkflowPanel';
1516

17+
const POLLING_INTERVAL_MS = 2000;
18+
1619
const WorkflowExecutionSheet = () => {
1720
const {setWorkflowExecutionSheetOpen, workflowExecutionId, workflowExecutionSheetOpen} =
1821
useWorkflowExecutionSheetStore(
@@ -30,6 +33,20 @@ const WorkflowExecutionSheet = () => {
3033
workflowExecutionSheetOpen
3134
);
3235

36+
const isWorkflowRunning = useMemo(() => {
37+
if (!workflowExecution?.job) {
38+
return false;
39+
}
40+
41+
return getWorkflowStatusType(workflowExecution.job, workflowExecution.triggerExecution) === 'running';
42+
}, [workflowExecution]);
43+
44+
useGetProjectWorkflowExecutionQuery(
45+
{id: workflowExecutionId},
46+
workflowExecutionSheetOpen && isWorkflowRunning,
47+
POLLING_INTERVAL_MS
48+
);
49+
3350
const handleOpenChange = useCallback(() => {
3451
setWorkflowExecutionSheetOpen(!workflowExecutionSheetOpen);
3552
}, [workflowExecutionSheetOpen, setWorkflowExecutionSheetOpen]);

client/src/shared/queries/automation/workflowExecutions.queries.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,14 @@ export const useGetWorkspaceProjectWorkflowExecutionsQuery = (request: GetWorkfl
2828
}),
2929
});
3030

31-
export const useGetProjectWorkflowExecutionQuery = (request: GetWorkflowExecutionRequest, enabled?: boolean) =>
31+
export const useGetProjectWorkflowExecutionQuery = (
32+
request: GetWorkflowExecutionRequest,
33+
enabled?: boolean,
34+
refetchInterval?: number | false
35+
) =>
3236
useQuery<WorkflowExecution, Error>({
3337
queryKey: WorkflowExecutionKeys.workflowExecution(request.id),
3438
queryFn: () => new WorkflowExecutionApi().getWorkflowExecution(request),
3539
enabled: enabled === undefined ? true : enabled,
40+
refetchInterval,
3641
});

0 commit comments

Comments
 (0)