diff --git a/frontend/components/AudioPlayer.tsx b/frontend/components/AudioPlayer.tsx index 92edb60..3d41340 100644 --- a/frontend/components/AudioPlayer.tsx +++ b/frontend/components/AudioPlayer.tsx @@ -49,19 +49,30 @@ export default function AudioPlayer({ track }: AudioPlayerProps) { if (!audio) return const updateTime = () => setCurrentTime(audio.currentTime) - const updateDuration = () => setDuration(audio.duration) + const updateDuration = () => { + if (audio.duration && isFinite(audio.duration)) { + setDuration(audio.duration) + } + } const handleEnded = () => setIsPlaying(false) audio.addEventListener("timeupdate", updateTime) audio.addEventListener("loadedmetadata", updateDuration) + audio.addEventListener("durationchange", updateDuration) audio.addEventListener("ended", handleEnded) + // Initialize duration if already loaded + if (audio.duration && isFinite(audio.duration)) { + setDuration(audio.duration) + } + return () => { audio.removeEventListener("timeupdate", updateTime) audio.removeEventListener("loadedmetadata", updateDuration) + audio.removeEventListener("durationchange", updateDuration) audio.removeEventListener("ended", handleEnded) } - }, []) + }, [track?.id]) const loadWaveform = async (trackId: string) => { setIsLoadingWaveform(true) @@ -195,30 +206,32 @@ export default function AudioPlayer({ track }: AudioPlayerProps) { ) : waveformPeaks.length > 0 ? (