diff --git a/src/hooks/useMedia.ts b/src/hooks/useMedia.ts index 337e0c3b3..a0c5b9c93 100644 --- a/src/hooks/useMedia.ts +++ b/src/hooks/useMedia.ts @@ -8,5 +8,6 @@ export type UseMediaResult = UseBaseQuer export default function useMedia(mediaId: string, enabled: boolean = true): UseMediaResult { return useQuery(['media', mediaId], () => getMediaById(mediaId), { enabled: !!mediaId && enabled, + keepPreviousData: true, }); } diff --git a/src/screens/Movie/Movie.tsx b/src/screens/Movie/Movie.tsx index be2a57e2e..401079b44 100644 --- a/src/screens/Movie/Movie.tsx +++ b/src/screens/Movie/Movie.tsx @@ -85,8 +85,8 @@ const Movie = ({ }, [play]); useEffect(() => { - (document.scrollingElement || document.body).scrollTop = 0; - }, []); + (document.scrollingElement || document.body).scroll({ top: 0, behavior: 'smooth' }); + }, [id]); const { data: playlist } = useRecommendedPlaylist(config.recommendationsPlaylist || '', item); @@ -99,8 +99,10 @@ const Movie = ({ return nextItem && history.push(videoUrl(nextItem, searchParams.get('r'), true)); }, [history, id, playlist, searchParams]); - if (isLoading) return ; - if (error || !item) return ; + console.log(isLoading, item); + + if (isLoading && !item) return ; + if ((!isLoading && error) || !item) return ; const pageTitle = `${item.title} - ${config.siteName}`; const canonicalUrl = item ? `${window.location.origin}${movieURL(item)}` : window.location.href; diff --git a/src/screens/Series/Series.tsx b/src/screens/Series/Series.tsx index 1d7bd7151..1eb7a6c6b 100644 --- a/src/screens/Series/Series.tsx +++ b/src/screens/Series/Series.tsx @@ -44,7 +44,8 @@ const Series = ({ true, false, ); - const { isLoading, error, data: item } = useMedia(searchParams.get('e') || ''); + const episodeId = searchParams.get('e') || ''; + const { isLoading, error, data: item } = useMedia(episodeId); const { data: trailerItem } = useMedia(item?.trailerId || ''); const [seasonFilter, setSeasonFilter] = useState(''); @@ -114,11 +115,11 @@ const Series = ({ }, [play]); useEffect(() => { - (document.scrollingElement || document.body).scrollTop = 0; - }, []); + (document.scrollingElement || document.body).scroll({ top: 0, behavior: 'smooth' }); + }, [episodeId]); - if (isLoading || playlistIsLoading || !searchParams.has('e')) return ; - if (error || !item) return ; + if ((!item && isLoading) || playlistIsLoading || !searchParams.has('e')) return ; + if ((!isLoading && error) || !item) return ; if (playlistError || !seriesPlaylist) return ; const pageTitle = `${item.title} - ${config.siteName}`;