diff --git a/jam-ui/src/hooks/useSessionWebSocket.js b/jam-ui/src/hooks/useSessionWebSocket.js index 5a1516189..4627fd7c4 100644 --- a/jam-ui/src/hooks/useSessionWebSocket.js +++ b/jam-ui/src/hooks/useSessionWebSocket.js @@ -15,7 +15,8 @@ import { startRecording, stopRecording, addRecordedTrack, - setConnectionStatus + setConnectionStatus, + setAvailableMixdowns } from '../store/features/activeSessionSlice'; import { updateMediaSummary, @@ -25,7 +26,8 @@ import { setBackingTracks, setJamTracks, setRecordedTracks, - updateJamTrackState + updateJamTrackState, + setDownloadState } from '../store/features/mediaSlice'; /** @@ -132,11 +134,31 @@ export const useSessionWebSocket = (sessionId) => { dispatch(setJamTracks(mixers.jamTracks || [])); dispatch(setRecordedTracks(mixers.recordedTracks || [])); dispatch(setMetronome(mixers.metronome || null)); + + // Phase 5 Plan 2: Handle JamTrack mixdown changes + if (mixers.jamTrackMixdowns) { + dispatch(setAvailableMixdowns(mixers.jamTrackMixdowns)); + } }, JAM_TRACK_CHANGES: (changes) => { console.log('Jam track changes received:', changes); - dispatch(updateJamTrackState(changes)); + dispatch(updateJamTrackState({ + isPlaying: changes.jamTrackState?.isPlaying || false, + isPaused: changes.jamTrackState?.isPaused || false, + currentPositionMs: parseInt(changes.jamTrackState?.currentPositionMs || '0', 10), + lastUpdate: Date.now() + })); + }, + + MIXDOWN_CHANGES: (message) => { + console.log('Mixdown changes received:', message); + if (message.mixdownPackage) { + dispatch(setDownloadState({ + currentStep: message.mixdownPackage.current_packaging_step || 0, + totalSteps: message.mixdownPackage.packaging_steps || 0 + })); + } }, // Connection events