From e567a2c5ab7c7808ea79e94a094dda4a0411b2e3 Mon Sep 17 00:00:00 2001 From: Benoit Date: Tue, 23 Dec 2025 09:27:01 +0100 Subject: [PATCH] Player full fonctionnel ! --- frontend/components/AudioPlayer.tsx | 59 ++++++++++++++++++----------- 1 file changed, 36 insertions(+), 23 deletions(-) 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 ? (
- {waveformPeaks.map((peak: number, index: number) => { - const isPlayed = (index / waveformPeaks.length) * 100 <= progress - return ( -
+ {waveformPeaks + .filter((_: number, index: number) => index % 4 === 0) // Take every 4th peak to reduce from 800 to 200 + .map((peak: number, index: number) => { + const originalIndex = index * 4 + const isPlayed = (originalIndex / waveformPeaks.length) * 100 <= progress + return (
-
- ) - })} + > +
+
+ ) + })}
) : (