feat(05-02): add 3 WebSocket handlers for JamTrack events

- Extended MIXER_CHANGES: handles jamTrackMixdowns updates
- Enhanced JAM_TRACK_CHANGES: parses state correctly with parseInt
- Added MIXDOWN_CHANGES: tracks download progress steps
- All handlers dispatch correct Redux actions
- Added imports: setAvailableMixdowns, setDownloadState

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Nuwan 2026-01-15 00:11:42 +05:30
parent 8a536ac628
commit db06357d32
1 changed files with 25 additions and 3 deletions

View File

@ -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