diff --git a/frontend/src/pages/Watch.jsx b/frontend/src/pages/Watch.jsx index 24f5f6f..efaa861 100644 --- a/frontend/src/pages/Watch.jsx +++ b/frontend/src/pages/Watch.jsx @@ -671,8 +671,8 @@ export default function Watch() { const { data: subtitleFiles = [] } = useQuery({ queryKey: ["subtitle-files", youtubeVideoId], queryFn: () => getSubtitleFiles(youtubeVideoId).then(r => r.data), - enabled: fileReady, - staleTime: Infinity, + enabled: !!youtubeVideoId, + staleTime: 60_000, }); const { data: dlStatus } = useQuery({ @@ -995,41 +995,22 @@ export default function Watch() { )} {(() => { - // Subs already on disk → show langs + "+" to add more - if (subtitleFiles.length > 0 && !subsRequested) return ( -
- - CC: {subtitleFiles.map(s => s.lang).join(", ")} - - -
- ); - // Not yet asked → show CC chip + const onDisk = subtitleFiles.map(s => s.lang); + const onDiskSet = new Set(onDisk); + if (!subsRequested) return ( ); - // Loading YouTube subtitle list - if (subsLoading) return ( - - - CC - - ); - const manual = new Set(availableSubs?.manual ?? []); - const auto = (availableSubs?.auto ?? []).filter(l => !manual.has(l)); - if (!manual.size && !auto.length) return ( - No CC - ); + + const ytManual = (availableSubs?.manual ?? []).filter(l => !onDiskSet.has(l)); + const ytAuto = (availableSubs?.auto ?? []).filter(l => !onDiskSet.has(l) && !ytManual.includes(l)); + const needsDownload = selectedSubLang && !onDiskSet.has(selectedSubLang); + return ( <> - {dlComplete && selectedSubLang && ( + {dlComplete && needsDownload && ( )}