'use client'; import { useState } from 'react'; import { useSearchParams } from 'next/navigation'; import { Card } from '@/components/ui/Card'; import { Button } from '@/components/ui/Button'; import { Icons } from '@/components/ui/Icon'; import { useHistoryStore } from '@/lib/store/history-store'; import { CustomVideoPlayer } from './CustomVideoPlayer'; interface VideoPlayerProps { playUrl: string; videoId?: string; currentEpisode: number; onBack: () => void; } export function VideoPlayer({ playUrl, videoId, currentEpisode, onBack }: VideoPlayerProps) { const [videoError, setVideoError] = useState(''); const searchParams = useSearchParams(); const { addToHistory } = useHistoryStore(); // Get video metadata from URL params const source = searchParams.get('source') || ''; const title = searchParams.get('title') || '未知视频'; // Get saved progress for this video const getSavedProgress = () => { if (!videoId) return 0; const savedTime = localStorage.getItem(`video_progress_${videoId}_${currentEpisode}`); return savedTime ? parseFloat(savedTime) : 0; }; // Handle time updates and save progress const handleTimeUpdate = (currentTime: number, duration: number) => { if (!videoId || !playUrl || duration === 0) return; // Save progress every few seconds if (currentTime > 1) { addToHistory( videoId, title, playUrl, currentEpisode, source, currentTime, duration, undefined, [] ); } }; // Handle video errors const handleVideoError = (error: string) => { console.error('Video playback error:', error); setVideoError(error); }; if (!playUrl) { return (

暂无播放源

); } return ( {videoError ? (

播放失败

{videoError}

) : ( )}
); }