import React, { useState, useEffect, useCallback } from "react"; import { useTVModeStore } from "../../stores/tvModeStore"; export const TVModeChapterTransition = ({ onContinue, onCancel, nextChapterTitle, countdown: initialCountdown = 5, }) => { const { storyTitle, chapterNumber, isLoadingNextChapter } = useTVModeStore(); const [countdown, setCountdown] = useState(initialCountdown); const [isPaused, setIsPaused] = useState(false); const [isStarting, setIsStarting] = useState(false); const handleContinue = useCallback(async () => { if (isLoadingNextChapter || isStarting) return; setIsStarting(true); try { await onContinue(); } catch (error) { setIsStarting(false); } }, [onContinue, isLoadingNextChapter, isStarting]); // Countdown timer useEffect(() => { if (isPaused || isLoadingNextChapter || isStarting) return; if (countdown <= 0) { handleContinue(); return; } const timer = setTimeout(() => { setCountdown((prev) => prev - 1); }, 1000); return () => clearTimeout(timer); }, [countdown, isPaused, isLoadingNextChapter, isStarting, handleContinue]); const handlePauseToggle = () => { setIsPaused((prev) => !prev); }; const handleSkip = () => { handleContinue(); }; return (
{/* Chapter Complete Badge */}
Chapter {chapterNumber} Complete
{/* Story Title */}

{storyTitle}

{/* Divider with decoration */}
{/* Next Episode Announcement */}
Next Episode

{nextChapterTitle || `Chapter ${chapterNumber + 1}`}

{/* Loading or Countdown */} {isLoadingNextChapter || isStarting ? (

Generating next chapter...

) : (<> {/* Countdown Ring */}
{countdown} {isPaused ? "Paused" : "seconds"}
{/* Action Buttons */}
)}
); }; export default TVModeChapterTransition;