import { queryOptions, useQuery } from "@octanejs/tanstack-query"; import type { TaskRunPage, TaskSummary } from "../../../shared/tasks"; import { activeRun } from "../task-history"; import type { CustomerQuerySession } from "../customer-query-session"; import { useCustomerQuerySession } from "../customer-query-provider"; import { callOwner, type SettingsConnection } from "../owner-rpc"; export function taskListOptions( session: CustomerQuerySession, connection: SettingsConnection, ) { return queryOptions({ queryKey: session.key("tasks", "list"), enabled: !!session.getSnapshot().scope && !!connection?.isReady(), queryFn: ({ signal }) => callOwner(connection, "listTasks", [], signal), }); } export function useTaskListQuery( connection: SettingsConnection, busy: boolean, selected: string | null, ) { const session = useCustomerQuerySession(); const options = taskListOptions(session, connection); return useQuery({ ...options, enabled: options.enabled && !busy, refetchInterval: () => session.client .getQueryData( session.key("tasks", "history", selected ?? ""), ) ?.runs.some(activeRun) ? 3000 : 30_000, }); }