|
|
|
import React from 'react'; |
|
import { useParams, useNavigate } from 'react-router-dom'; |
|
import MoviePlayer from '../components/MoviePlayer'; |
|
|
|
const MoviePlayerPage = () => { |
|
const { title } = useParams<{ title: string }>(); |
|
const navigate = useNavigate(); |
|
|
|
const handleBack = () => { |
|
navigate(`/movie/${encodeURIComponent(title || '')}`); |
|
}; |
|
|
|
|
|
const savePlaybackProgress = (currentTime: number, duration: number) => { |
|
if (!title) return; |
|
|
|
try { |
|
const progressKey = `movie-progress-${title}`; |
|
const isCompleted = (currentTime / duration) > 0.9; |
|
|
|
localStorage.setItem(progressKey, JSON.stringify({ |
|
currentTime, |
|
duration, |
|
lastPlayed: new Date().toISOString(), |
|
completed: isCompleted |
|
})); |
|
} catch (error) { |
|
console.error('Error saving playback progress:', error); |
|
} |
|
}; |
|
|
|
|
|
const getPlaybackProgress = () => { |
|
if (!title) return 0; |
|
|
|
try { |
|
const progressKey = `movie-progress-${title}`; |
|
const storedProgress = localStorage.getItem(progressKey); |
|
|
|
if (storedProgress) { |
|
const progress = JSON.parse(storedProgress); |
|
if (progress && progress.currentTime && !progress.completed) { |
|
return progress.currentTime; |
|
} |
|
} |
|
} catch (error) { |
|
console.error('Error reading playback progress:', error); |
|
} |
|
|
|
return 0; |
|
}; |
|
|
|
return ( |
|
<div className="fixed inset-0 h-screen w-screen overflow-hidden bg-black"> |
|
<MoviePlayer |
|
movieTitle={title || ''} |
|
startTime={getPlaybackProgress()} |
|
onClosePlayer={handleBack} |
|
onProgressUpdate={savePlaybackProgress} |
|
/> |
|
</div> |
|
); |
|
}; |
|
|
|
export default MoviePlayerPage; |
|
|