diff --git a/jam-ui/src/components/client/JKSessionJamTrackPlayer.js b/jam-ui/src/components/client/JKSessionJamTrackPlayer.js index 900f603b4..e405dd969 100644 --- a/jam-ui/src/components/client/JKSessionJamTrackPlayer.js +++ b/jam-ui/src/components/client/JKSessionJamTrackPlayer.js @@ -88,9 +88,9 @@ const JKSessionJamTrackPlayer = ({ // Download flow will be triggered by loadJamTrack (no diagnostic logging) } - // Fetch available mixdowns + // Use mixdowns from jamTrack object (fetched from REST API with packages) try { - const mixdowns = await jamClient.JamTrackGetMixdowns(jamTrack.id); + const mixdowns = jamTrack.mixdowns; if (mixdowns && mixdowns.length > 0) { // Organize into hierarchy: master, custom mixes, stems @@ -118,7 +118,7 @@ const JKSessionJamTrackPlayer = ({ } } } catch (err) { - console.error('[JamTrack] Failed to fetch mixdowns:', err); + console.error('[JamTrack] Failed to load mixdowns:', err); // Non-fatal - can still play default mixdown } diff --git a/jam-ui/src/store/features/mediaSlice.js b/jam-ui/src/store/features/mediaSlice.js index 15b110e39..0ad29bfd8 100644 --- a/jam-ui/src/store/features/mediaSlice.js +++ b/jam-ui/src/store/features/mediaSlice.js @@ -62,20 +62,25 @@ export const downloadJamTrack = createAsyncThunk( // Get client sample rate for package selection (pickMyPackage logic) const sampleRate = await jamClient.GetSampleRate(); - // Get mixdowns and find compatible package - const mixdowns = await jamClient.JamTrackGetMixdowns(jamTrack.id); + // Use mixdowns from jamTrack object (fetched from REST API) + // jamClient.JamTrackGetMixdowns returns a different structure without packages + const mixdowns = jamTrack.mixdowns; if (!mixdowns || mixdowns.length === 0) { throw new Error('No mixdowns available for this JamTrack'); } - // Find the first mixdown (use selected mixdownId if provided, else use first) + // Find the mixdown (use selected mixdownId if provided, else use first) const mixdown = mixdownId ? mixdowns.find(m => m.id === mixdownId) || mixdowns[0] : mixdowns[0]; - if (!mixdown || !mixdown.packages || mixdown.packages.length === 0) { - throw new Error('Mixdown has no packages available'); + if (!mixdown) { + throw new Error('Selected mixdown not found'); + } + + if (!mixdown.packages || mixdown.packages.length === 0) { + throw new Error(`Mixdown "${mixdown.name}" has no packages available`); } // pickMyPackage logic: find compatible package (ogg, jkz, matching sample rate) @@ -86,7 +91,7 @@ export const downloadJamTrack = createAsyncThunk( ); if (!compatiblePackage) { - throw new Error(`No compatible package found for sample rate ${sampleRate}kHz`); + throw new Error(`No compatible package found for sample rate ${sampleRate}kHz (mixdown: ${mixdown.name})`); } const packageId = compatiblePackage.id;