diff --git a/src/hooks/useAudioPlayer.js b/src/hooks/useAudioPlayer.js new file mode 100644 index 0000000..7275876 --- /dev/null +++ b/src/hooks/useAudioPlayer.js @@ -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 } +}