import { useState, useCallback } from 'react'; import type { Track } from '@/types/track'; import { createTrack, createTrackFromBuffer } from '@/lib/audio/track-utils'; export function useMultiTrack() { // Note: localStorage persistence disabled in favor of IndexedDB project management const [tracks, setTracks] = useState([]); const addTrack = useCallback((name?: string, height?: number) => { const track = createTrack(name, undefined, height); setTracks((prev) => [...prev, track]); return track; }, []); const addTrackFromBuffer = useCallback((buffer: AudioBuffer, name?: string, height?: number) => { const track = createTrackFromBuffer(buffer, name, undefined, height); setTracks((prev) => [...prev, track]); return track; }, []); const removeTrack = useCallback((trackId: string) => { setTracks((prev) => prev.filter((t) => t.id !== trackId)); }, []); const updateTrack = useCallback((trackId: string, updates: Partial) => { setTracks((prev) => prev.map((track) => track.id === trackId ? { ...track, ...updates } : track ) ); }, []); const clearTracks = useCallback(() => { setTracks([]); }, []); const reorderTracks = useCallback((fromIndex: number, toIndex: number) => { setTracks((prev) => { const newTracks = [...prev]; const [movedTrack] = newTracks.splice(fromIndex, 1); newTracks.splice(toIndex, 0, movedTrack); return newTracks; }); }, []); const setTrackBuffer = useCallback((trackId: string, buffer: AudioBuffer) => { setTracks((prev) => prev.map((track) => track.id === trackId ? { ...track, audioBuffer: buffer } : track ) ); }, []); const loadTracks = useCallback((tracksToLoad: Track[]) => { setTracks(tracksToLoad); }, []); return { tracks, addTrack, addTrackFromBuffer, removeTrack, updateTrack, clearTracks, reorderTracks, setTrackBuffer, loadTracks, }; }