diff --git a/frontend/src/hooks/useJob.ts b/frontend/src/hooks/useJob.ts index d27e844..dd5887a 100644 --- a/frontend/src/hooks/useJob.ts +++ b/frontend/src/hooks/useJob.ts @@ -32,11 +32,13 @@ export function useJob(jobId: string) { }); } -export function useJobDownloads(jobId: string) { +const EARLY_STATUSES = new Set(['created', 'ingesting', 'ai_processing']); + +export function useJobDownloads(jobId: string, jobStatus?: string) { return useQuery({ queryKey: ['jobs', jobId, 'downloads'], queryFn: () => apiClient.getJobDownloads(jobId), - enabled: !!jobId, + enabled: !!jobId && (jobStatus === undefined || !EARLY_STATUSES.has(jobStatus)), staleTime: 30000, // 30 seconds refetchOnWindowFocus: false, }); diff --git a/frontend/src/routes/Downloads.tsx b/frontend/src/routes/Downloads.tsx index 280b7cc..19898eb 100644 --- a/frontend/src/routes/Downloads.tsx +++ b/frontend/src/routes/Downloads.tsx @@ -102,7 +102,7 @@ export function Downloads() { const { id } = useParams(); const { data: job, isLoading: jobLoading } = useJob(id!); - const { data: downloads, isLoading: downloadsLoading, error: downloadsError } = useJobDownloads(id!); + const { data: downloads, isLoading: downloadsLoading, error: downloadsError } = useJobDownloads(id!, job?.status); if (jobLoading) { return ( diff --git a/frontend/src/routes/admin/FinalDetail.tsx b/frontend/src/routes/admin/FinalDetail.tsx index 01c8b0b..9db2424 100644 --- a/frontend/src/routes/admin/FinalDetail.tsx +++ b/frontend/src/routes/admin/FinalDetail.tsx @@ -136,7 +136,7 @@ export function FinalDetail() { const { data: job, isLoading, error } = useJob(id!); const { data: validation } = useJobValidation(id!); - const { data: downloads } = useJobDownloads(id!); + const { data: downloads } = useJobDownloads(id!, job?.status); const completeJobMutation = useCompleteJob(); const rejectFinalMutation = useRejectFinalReview(); diff --git a/frontend/src/routes/admin/QCDetail.tsx b/frontend/src/routes/admin/QCDetail.tsx index 2b8a510..40c0ac4 100644 --- a/frontend/src/routes/admin/QCDetail.tsx +++ b/frontend/src/routes/admin/QCDetail.tsx @@ -57,7 +57,7 @@ export function QCDetail() { // Fetch VTT content for selected language const { data: vttContent, isLoading: vttLoading } = useJobVttContent(id!, selectedLanguage); - const { data: downloads } = useJobDownloads(id!); + const { data: downloads } = useJobDownloads(id!, job?.status); // Fetch accessible video edit state for selected language const { data: editState, isLoading: editStateLoading } = useAccessibleVideoEditState(id!, selectedLanguage); diff --git a/frontend/src/routes/jobs/JobDetail.tsx b/frontend/src/routes/jobs/JobDetail.tsx index 0b31053..b7925ba 100644 --- a/frontend/src/routes/jobs/JobDetail.tsx +++ b/frontend/src/routes/jobs/JobDetail.tsx @@ -110,7 +110,7 @@ export function JobDetail() { const [activeTab, setActiveTab] = useState<'overview' | 'video' | 'assets' | 'history'>('overview'); const { data: job, isLoading, error } = useJob(id!); - const { data: downloads } = useJobDownloads(id!); + const { data: downloads } = useJobDownloads(id!, job?.status); // Get source language from job (default to 'en' for backwards compatibility) const sourceLanguage = job?.source?.language || 'en'; const { data: sourceVtt } = useJobVttContent(id!, sourceLanguage);