import React, { useState, useEffect } from 'react'; import { Button } from '@/components/ui/button'; import { Play, Pause, FastForward, Rewind, ChevronsRight, ChevronsLeft } from 'lucide-react'; import { Slider } from '@/components/ui/slider'; interface PlaybackControlsProps { duration: number; // in seconds } const PlaybackControls: React.FC = ({ duration }) => { const [isPlaying, setIsPlaying] = useState(false); const [currentTime, setCurrentTime] = useState(0); const [playbackSpeed, setPlaybackSpeed] = useState(1); useEffect(() => { // Reset time when episode changes (duration changes) setCurrentTime(0); setIsPlaying(false); }, [duration]); // This is a mock playback timer. useEffect(() => { let interval: NodeJS.Timeout; if (isPlaying && currentTime < duration) { interval = setInterval(() => { setCurrentTime(prev => Math.min(prev + (1 * playbackSpeed), duration)); }, 1000); } if (currentTime >= duration) { setIsPlaying(false); } return () => clearInterval(interval); }, [isPlaying, duration, playbackSpeed, currentTime]); const formatTime = (time: number) => { const minutes = Math.floor(time / 60); const seconds = Math.floor(time % 60); return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; }; const speedOptions = [0.5, 1, 1.5, 2]; return (
setCurrentTime(value[0])} className="w-full" />
{formatTime(currentTime)} {formatTime(duration)}
Speed: {speedOptions.map(speed => ( ))}
); }; export default PlaybackControls;