Import source: src/hooks/useAudioPlayer
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { useState, useCallback } from 'react'
|
||||
import { tracks } from '../data/mockData'
|
||||
|
||||
export function useAudioPlayer() {
|
||||
const [currentTrack, setCurrentTrack] = useState(tracks[0])
|
||||
const [isPlaying, setIsPlaying] = useState(false)
|
||||
const [progress, setProgress] = useState(0)
|
||||
const [volume, setVolume] = useState(0.8)
|
||||
|
||||
const play = useCallback((track) => {
|
||||
setCurrentTrack(track)
|
||||
setIsPlaying(true)
|
||||
}, [])
|
||||
|
||||
const togglePlay = useCallback(() => setIsPlaying(p => !p), [])
|
||||
|
||||
const next = useCallback(() => {
|
||||
setCurrentTrack(t => {
|
||||
const idx = tracks.findIndex(x => x.id === t.id)
|
||||
return tracks[(idx + 1) % tracks.length]
|
||||
})
|
||||
}, [])
|
||||
|
||||
const prev = useCallback(() => {
|
||||
setCurrentTrack(t => {
|
||||
const idx = tracks.findIndex(x => x.id === t.id)
|
||||
return tracks[(idx - 1 + tracks.length) % tracks.length]
|
||||
})
|
||||
}, [])
|
||||
|
||||
return { currentTrack, isPlaying, progress, volume, play, togglePlay, next, prev, setProgress, setVolume }
|
||||
}
|
||||
Reference in New Issue
Block a user