diff --git a/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js b/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js index ddd7dc0a7..13a447be0 100644 --- a/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js +++ b/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js @@ -43,20 +43,24 @@ const JKSessionBackingTrackPlayer = ({ setCurrentTime('0:00'); setCurrentPositionMs(0); - // Fetch and set duration immediately when track loads - try { - const durationInMs = jamClient.SessionGetTracksPlayDurationMs(); - console.log('JKSessionBackingTrackPlayer: Duration from jamClient:', durationInMs, 'Type:', typeof durationInMs); + // Fetch and set duration immediately when track loads (async) + const fetchDuration = async () => { + try { + const durationInMs = await jamClient.SessionGetTracksPlayDurationMs(); + console.log('JKSessionBackingTrackPlayer: Duration from jamClient:', durationInMs, 'Type:', typeof durationInMs); - // Ensure we have a valid number - const validDuration = (durationInMs != null && !isNaN(durationInMs) && durationInMs >= 0) ? durationInMs : 0; - setDurationMs(validDuration); - setDuration(formatTime(validDuration)); - } catch (error) { - console.error('Error fetching track duration:', error); - setDuration('0:00'); - setDurationMs(0); - } + // Ensure we have a valid number + const validDuration = (durationInMs != null && !isNaN(durationInMs) && durationInMs >= 0) ? durationInMs : 0; + setDurationMs(validDuration); + setDuration(formatTime(validDuration)); + } catch (error) { + console.error('Error fetching track duration:', error); + setDuration('0:00'); + setDurationMs(0); + } + }; + + fetchDuration(); } }, [isOpen, backingTrack, jamClient]); @@ -65,14 +69,15 @@ const JKSessionBackingTrackPlayer = ({ let intervalId = null; if (isPlaying && jamClient) { - // Start polling when playing - intervalId = setInterval(() => { + // Start polling when playing (async) + intervalId = setInterval(async () => { try { if (!jamClient) return; - const positionMs = jamClient.SessionCurrrentPlayPosMs(); - const durationInMs = jamClient.SessionGetTracksPlayDurationMs(); - const trackIsPlaying = jamClient.isSessionTrackPlaying(); + // Await all async jamClient calls + const positionMs = await jamClient.SessionCurrrentPlayPosMs(); + const durationInMs = await jamClient.SessionGetTracksPlayDurationMs(); + const trackIsPlaying = await jamClient.isSessionTrackPlaying(); console.log('JKSessionBackingTrackPlayer polling:', { positionMs, durationInMs, trackIsPlaying });