fix weird loading state in actions (#439)

This commit is contained in:
Salih Altun
2024-06-06 23:16:35 +03:00
committed by GitHub
parent 1d3a7a0348
commit 579aa274cd
2 changed files with 34 additions and 29 deletions

View File

@@ -70,6 +70,7 @@ function ScrollableActionList({
const selected = activeIndex === index; const selected = activeIndex === index;
return ( return (
<div <div
key={index}
ref={(element) => { ref={(element) => {
refs.current[index] = element; refs.current[index] = element;
}} }}

View File

@@ -22,11 +22,12 @@ function getActionInput(action: ActionApiResponse) {
return input; return input;
} }
function useActions( function useActions(taskId: string): {
taskId: string, data?: Array<Action>;
): ReturnType<typeof useQuery<Array<Action | null>>> { isFetching: boolean;
} {
const credentialGetter = useCredentialGetter(); const credentialGetter = useCredentialGetter();
const { data: task } = useQuery<TaskApiResponse>({ const { data: task, isFetching: taskIsFetching } = useQuery<TaskApiResponse>({
queryKey: ["task", taskId], queryKey: ["task", taskId],
queryFn: async () => { queryFn: async () => {
const client = await getClient(credentialGetter); const client = await getClient(credentialGetter);
@@ -37,15 +38,21 @@ function useActions(
const taskIsRunningOrQueued = const taskIsRunningOrQueued =
task?.status === Status.Running || task?.status === Status.Queued; task?.status === Status.Running || task?.status === Status.Queued;
const useQueryReturn = useQuery<Array<Action | null>>({ const stepsQuery = useQuery<Array<StepApiResponse>>({
queryKey: ["task", taskId, "actions"], queryKey: ["task", taskId, "steps"],
queryFn: async () => { queryFn: async () => {
const client = await getClient(credentialGetter); const client = await getClient(credentialGetter);
const steps = (await client return client
.get(`/tasks/${taskId}/steps`) .get(`/tasks/${taskId}/steps`)
.then((response) => response.data)) as Array<StepApiResponse>; .then((response) => response.data);
},
enabled: !!task,
staleTime: taskIsRunningOrQueued ? 30 : Infinity,
refetchOnWindowFocus: taskIsRunningOrQueued,
});
const actions = steps.map((step) => { const actions = stepsQuery.data
?.map((step) => {
const actionsAndResults = step.output.actions_and_results; const actionsAndResults = step.output.actions_and_results;
const actions = actionsAndResults.map((actionAndResult, index) => { const actions = actionsAndResults.map((actionAndResult, index) => {
@@ -61,16 +68,13 @@ function useActions(
return action; return action;
}); });
return actions; return actions;
}); })
.flat();
return actions.flat(); return {
}, data: actions,
enabled: !!task, isFetching: stepsQuery.isFetching || taskIsFetching,
staleTime: taskIsRunningOrQueued ? 30 : Infinity, };
refetchOnWindowFocus: taskIsRunningOrQueued,
});
return useQueryReturn;
} }
export { useActions }; export { useActions };