fix: display audio length & reset curretTime at the end
This commit is contained in:
@@ -71,7 +71,7 @@ export default function Lekte({audio, url, parole}) {
|
|||||||
const audioRef = useRef(new Audio(audio))
|
const audioRef = useRef(new Audio(audio))
|
||||||
const intervalRef = useRef()
|
const intervalRef = useRef()
|
||||||
const isReady = useRef(false)
|
const isReady = useRef(false)
|
||||||
const {duration} = audioRef.current
|
const [duration, setDuration] = useState(0)
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
const {mode} = useColorScheme()
|
const {mode} = useColorScheme()
|
||||||
const [position, setPosition] = useState(0)
|
const [position, setPosition] = useState(0)
|
||||||
@@ -139,6 +139,24 @@ export default function Lekte({audio, url, parole}) {
|
|||||||
setIsPlaying(false)
|
setIsPlaying(false)
|
||||||
setVolume(100)
|
setVolume(100)
|
||||||
setPosition(0)
|
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])
|
}, [audio])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user