From 495532733406d275808bd5c9a2d034b6397c0162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Tue, 2 Jun 2026 13:36:41 +0400 Subject: [PATCH] fix: display audio length & reset curretTime at the end --- components/teks/lekte.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/components/teks/lekte.js b/components/teks/lekte.js index 32770a3..a0740ac 100644 --- a/components/teks/lekte.js +++ b/components/teks/lekte.js @@ -71,7 +71,7 @@ export default function Lekte({audio, url, parole}) { const audioRef = useRef(new Audio(audio)) const intervalRef = useRef() const isReady = useRef(false) - const {duration} = audioRef.current + const [duration, setDuration] = useState(0) const theme = useTheme() const {mode} = useColorScheme() const [position, setPosition] = useState(0) @@ -139,6 +139,24 @@ export default function Lekte({audio, url, parole}) { setIsPlaying(false) setVolume(100) setPosition(0) + setDuration(0) + }, [audio]) + + useEffect(() => { + const el = audioRef.current + const onLoaded = () => setDuration(Math.round(el.duration)) + const onEnded = () => { + clearInterval(intervalRef.current) + setIsPlaying(false) + setPosition(0) + el.currentTime = 0 + } + el.addEventListener('loadedmetadata', onLoaded) + el.addEventListener('ended', onEnded) + return () => { + el.removeEventListener('loadedmetadata', onLoaded) + el.removeEventListener('ended', onEnded) + } }, [audio]) useEffect(() => {