From d59fdae94446af6d467b5cedc921b1977adb28ed Mon Sep 17 00:00:00 2001 From: Nuwan Date: Sun, 1 Mar 2026 23:53:45 +0530 Subject: [PATCH] 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 --- jam-ui/src/hooks/useSessionModel.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/jam-ui/src/hooks/useSessionModel.js b/jam-ui/src/hooks/useSessionModel.js index 16fd4b6af..60f4141d3 100644 --- a/jam-ui/src/hooks/useSessionModel.js +++ b/jam-ui/src/hooks/useSessionModel.js @@ -692,8 +692,13 @@ export default function useSessionModel(app, server, sessionScreen) { } }); } - dispatch(setBackingTracks(extractedBackingTracks)); - console.log('[useSessionModel] Extracted backing tracks:', extractedBackingTracks); + // Only update backing tracks if server has data + // 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 const extractedJamTracks = response.jam_track && response.jam_track.tracks