From 030ddfba81dc9161025f70f104a7c921807d9faa Mon Sep 17 00:00:00 2001 From: R0m1k3 Date: Thu, 16 Apr 2026 15:34:34 +0200 Subject: [PATCH] feat: implement AudioPlayer component with playback controls, progress tracking, and persistent settings --- frontend/src/components/AudioPlayer.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/AudioPlayer.tsx b/frontend/src/components/AudioPlayer.tsx index 4a0ac94..07668fa 100644 --- a/frontend/src/components/AudioPlayer.tsx +++ b/frontend/src/components/AudioPlayer.tsx @@ -1,6 +1,7 @@ import { useState, useRef, useEffect } from 'react'; import { Episode } from '../services/episodeService'; import { episodeService } from '../services/episodeService'; +import { useAudio } from '../context/AudioContext'; import { Play, Pause, @@ -22,8 +23,8 @@ interface AudioPlayerProps { } export default function AudioPlayer({ episode, onClose, userId }: AudioPlayerProps) { + const { isPlaying, setIsPlaying, togglePlay } = useAudio(); const audioRef = useRef(null); - const [isPlaying, setIsPlaying] = useState(false); const [currentTime, setCurrentTime] = useState(0); const [duration, setDuration] = useState(0); const [volume, setVolume] = useState(() => parseFloat(localStorage.getItem('podcastic-volume') || '1')); @@ -75,7 +76,6 @@ export default function AudioPlayer({ episode, onClose, userId }: AudioPlayerPro if (!audioRef.current) return; if (isPlaying) audioRef.current.pause(); else audioRef.current.play(); - setIsPlaying(!isPlaying); }; const changeSpeed = () => { @@ -132,6 +132,8 @@ export default function AudioPlayer({ episode, onClose, userId }: AudioPlayerPro src={episode.audioUrl} onTimeUpdate={() => audioRef.current && setCurrentTime(audioRef.current.currentTime)} onLoadedMetadata={() => audioRef.current && setDuration(audioRef.current.duration)} + onPlay={() => setIsPlaying(true)} + onPause={() => setIsPlaying(false)} onEnded={() => setIsPlaying(false)} onError={() => setError("Impossible de charger ce fichier audio. Le lien est peut-être expiré ou protégé.")} autoPlay