Update workflow run page (#1372)

This commit is contained in:
Shuchang Zheng
2024-12-11 09:23:07 -08:00
committed by GitHub
parent 9cf4743961
commit 7272dadf3d
11 changed files with 661 additions and 494 deletions

View File

@@ -0,0 +1,48 @@
import { getClient } from "@/api/AxiosClient";
import { WorkflowRunStatusApiResponse } from "@/api/types";
import { useCredentialGetter } from "@/hooks/useCredentialGetter";
import {
statusIsNotFinalized,
statusIsRunningOrQueued,
} from "@/routes/tasks/types";
import { keepPreviousData, useQuery } from "@tanstack/react-query";
import { useParams } from "react-router-dom";
function useWorkflowRunQuery() {
const { workflowRunId, workflowPermanentId } = useParams();
const credentialGetter = useCredentialGetter();
return useQuery<WorkflowRunStatusApiResponse>({
queryKey: ["workflowRun", workflowPermanentId, workflowRunId],
queryFn: async () => {
const client = await getClient(credentialGetter);
return client
.get(`/workflows/${workflowPermanentId}/runs/${workflowRunId}`)
.then((response) => response.data);
},
refetchInterval: (query) => {
if (!query.state.data) {
return false;
}
if (statusIsNotFinalized(query.state.data)) {
return 5000;
}
return false;
},
placeholderData: keepPreviousData,
refetchOnMount: (query) => {
if (!query.state.data) {
return false;
}
return statusIsRunningOrQueued(query.state.data) ? "always" : false;
},
refetchOnWindowFocus: (query) => {
if (!query.state.data) {
return false;
}
return statusIsRunningOrQueued(query.state.data);
},
});
}
export { useWorkflowRunQuery };