fix(27): prevent session refresh from clearing local backing tracks

Race condition: when opening backing track, the sequence was:
1. Local state set from native client (my previous fix)
2. Native callback triggers refreshCurrentSession
3. Server hasn't received sync yet, returns empty backing_tracks
4. dispatch(setBackingTracks([])) clears local data
5. Track disappears

Fix: Only dispatch setBackingTracks if server has data. When user
closes backing track, closeMedia action clears the state directly.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Nuwan 2026-03-01 23:53:45 +05:30
parent c0c6e33863
commit d59fdae944
1 changed files with 7 additions and 2 deletions

View File

@ -692,8 +692,13 @@ export default function useSessionModel(app, server, sessionScreen) {
} }
}); });
} }
dispatch(setBackingTracks(extractedBackingTracks)); // Only update backing tracks if server has data
console.log('[useSessionModel] Extracted backing tracks:', extractedBackingTracks); // Avoids race condition: local state set from native client gets cleared
// by session refresh before server sync completes
if (extractedBackingTracks.length > 0) {
dispatch(setBackingTracks(extractedBackingTracks));
console.log('[useSessionModel] Extracted backing tracks:', extractedBackingTracks);
}
// Extract jam tracks // Extract jam tracks
const extractedJamTracks = response.jam_track && response.jam_track.tracks const extractedJamTracks = response.jam_track && response.jam_track.tracks