@@ -133,15 +133,24 @@ export default function useAudio({
133
133
cancelAnimationFrame ( timer ) ;
134
134
}
135
135
136
+ const onEnded = ( ) => {
137
+ cancelAnimationFrame ( timer ) ;
138
+ // set this explicitly to toggle button
139
+ setIsPlaying ( false ) ;
140
+ setTime ( startTime ) ;
141
+ }
142
+
136
143
current . addEventListener ( "play" , onPlay ) ;
137
144
current . addEventListener ( "pause" , onPause ) ;
138
145
current . addEventListener ( "error" , onError ) ;
146
+ current . addEventListener ( "ended" , onEnded ) ;
139
147
140
148
return ( ) => {
141
149
cancelAnimationFrame ( timer ) ;
142
150
current . removeEventListener ( "play" , onPlay ) ;
143
151
current . removeEventListener ( "pause" , onPause ) ;
144
152
current . removeEventListener ( "error" , onError ) ;
153
+ current . removeEventListener ( "ended" , onEnded ) ;
145
154
} ;
146
155
} , [ initialUrl , speed , startTime , loop , volume ] ) ;
147
156
@@ -189,8 +198,8 @@ export default function useAudio({
189
198
} , [ ] ) ;
190
199
191
200
const handleSeek = useCallback ( ( time : number ) => {
192
- audio . current . currentTime = time ;
193
- } , [ ] ) ;
201
+ audio . current . currentTime = time / speed ;
202
+ } , [ speed ] ) ;
194
203
195
204
const handleTogglePlay = useCallback ( ( ) => {
196
205
if ( isPlaying ) {
0 commit comments