feat(05-04): fetch and organize mixdowns in player initialization
- Add JamTrackGetMixdowns API call during player initialization - Organize mixdowns into master/customMixes/stems hierarchy - Store availableMixdowns in Redux (activeSessionSlice) - Set default mixdown selection (prefer master, fallback to first) - Set activeMixdown in Redux for UI display - Non-fatal error handling (can play without explicit selection) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
db192bdbc3
commit
7014107152
|
|
@ -7,6 +7,7 @@ import {
|
|||
setJamTrackState
|
||||
} from '../../store/features/mediaSlice';
|
||||
import { setOpenJamTrack, clearOpenJamTrack } from '../../store/features/sessionUISlice';
|
||||
import { setAvailableMixdowns, setActiveMixdown } from '../../store/features/activeSessionSlice';
|
||||
|
||||
const JKSessionJamTrackPlayer = ({
|
||||
isOpen,
|
||||
|
|
@ -65,6 +66,40 @@ const JKSessionJamTrackPlayer = ({
|
|||
console.log('[JamTrack] Not synchronized, will download');
|
||||
}
|
||||
|
||||
// Fetch available mixdowns
|
||||
try {
|
||||
const mixdowns = await jamClient.JamTrackGetMixdowns(jamTrack.id);
|
||||
|
||||
if (mixdowns && mixdowns.length > 0) {
|
||||
// Organize into hierarchy: master, custom mixes, stems
|
||||
const organized = {
|
||||
master: mixdowns.find(m => m.type === 'master') || null,
|
||||
customMixes: mixdowns.filter(m => m.type === 'custom' || m.type === 'custom-mix'),
|
||||
stems: mixdowns.filter(m => m.type === 'stem')
|
||||
};
|
||||
|
||||
dispatch(setAvailableMixdowns(mixdowns));
|
||||
|
||||
// Set initial mixdown if not already selected
|
||||
if (!selectedMixdownId) {
|
||||
const defaultMixdown = organized.master || (mixdowns[0] || null);
|
||||
if (defaultMixdown) {
|
||||
setSelectedMixdownId(defaultMixdown.id);
|
||||
dispatch(setActiveMixdown(defaultMixdown));
|
||||
}
|
||||
} else {
|
||||
// Find and set the initially selected mixdown
|
||||
const mixdown = mixdowns.find(m => m.id === selectedMixdownId);
|
||||
if (mixdown) {
|
||||
dispatch(setActiveMixdown(mixdown));
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('[JamTrack] Failed to fetch mixdowns:', err);
|
||||
// Non-fatal - can still play default mixdown
|
||||
}
|
||||
|
||||
// Set open in Redux
|
||||
dispatch(setOpenJamTrack(jamTrack.id));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue