diff --git a/src/app/portfolio/[slug]/(portfolio)/reporting/ReportingClientArea.tsx b/src/app/portfolio/[slug]/(portfolio)/reporting/ReportingClientArea.tsx index 47dfeaf..31f5b93 100644 --- a/src/app/portfolio/[slug]/(portfolio)/reporting/ReportingClientArea.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/reporting/ReportingClientArea.tsx @@ -204,7 +204,39 @@ export function ReportingClientArea({ // Baseline stays baseline const activeMetrics = baseline; - const scenarioBusy = !!selectedScenarioId && (isLoading || isFetching); + const { + data: taskData, + isLoading: taskLoading, + } = useQuery({ + queryKey: ["task", portfolioId], + queryFn: async () => { + const res = await fetch( + `/api/task?source=portfolio_id&source_id=${portfolioId}&service=plan_categorisation`, + ); + + if (!res.ok) throw new Error("Failed to fetch task"); + return res.json(); + }, + refetchInterval: (data) => { + const status = data?.state?.data?.task?.status; + + if (status === "Complete" || status === "Failed") { + return false; + } + + return 3000; + }, + refetchOnWindowFocus: false, + }); + + const taskStatus = taskData?.task?.status; + + const isTaskInProgress = + taskStatus && taskStatus !== "Complete" && taskStatus !== "Failed"; + + const scenarioBusy = + !!selectedScenarioId && (isLoading || isFetching || isTaskInProgress); + return ( <>