Update workflow run page (#1372)
This commit is contained in:
@@ -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 };
|
||||
Reference in New Issue
Block a user