From 1fde3bf9115c678cccc2421516d09d5a0cc3cb92 Mon Sep 17 00:00:00 2001 From: kuekhaoyang Date: Mon, 17 Nov 2025 09:16:36 +0800 Subject: [PATCH] Update episode handling in PlayerContent; set initial play URL based on episode parameter in URL and validate episode index --- app/player/page.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/app/player/page.tsx b/app/player/page.tsx index 0832f4d..afe7a7b 100644 --- a/app/player/page.tsx +++ b/app/player/page.tsx @@ -87,9 +87,17 @@ function PlayerContent() { setVideoData(data.data); setLoading(false); if (data.data.episodes && data.data.episodes.length > 0) { - const firstUrl = data.data.episodes[0].url; - console.log('Setting initial play URL:', firstUrl); - setPlayUrl(firstUrl); + // Check if there's an episode parameter in URL + const episodeParam = searchParams.get('episode'); + const episodeIndex = episodeParam ? parseInt(episodeParam, 10) : 0; + + // Validate episode index + const validIndex = (episodeIndex >= 0 && episodeIndex < data.data.episodes.length) ? episodeIndex : 0; + + const episodeUrl = data.data.episodes[validIndex].url; + console.log('Setting play URL for episode', validIndex, ':', episodeUrl); + setCurrentEpisode(validIndex); + setPlayUrl(episodeUrl); setIsVideoLoading(true); } else { console.warn('No episodes found in video data'); @@ -110,6 +118,11 @@ function PlayerContent() { setPlayUrl(episode.url); setVideoError(''); // Clear any previous errors setIsVideoLoading(true); + + // Update URL to reflect current episode + const params = new URLSearchParams(searchParams.toString()); + params.set('episode', index.toString()); + router.replace(`/player?${params.toString()}`, { scroll: false }); }; const handleVideoError = (e: React.SyntheticEvent) => {