feat(02-01): add state for position in milliseconds

Add currentPositionMs and durationMs state variables to track playback
position in numeric form for slider calculations, separate from formatted
string display values. Update initialization and polling useEffects to
maintain both numeric and formatted values. Reset position on stop.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Nuwan 2026-01-13 23:39:32 +05:30
parent 2e312849a6
commit 209cefcf22
1 changed files with 12 additions and 4 deletions

View File

@ -19,6 +19,8 @@ const JKSessionBackingTrackPlayer = ({
const [volume, setVolume] = useState(100);
const [currentTime, setCurrentTime] = useState('0:00');
const [duration, setDuration] = useState('0:00');
const [currentPositionMs, setCurrentPositionMs] = useState(0);
const [durationMs, setDurationMs] = useState(0);
const volumeRef = useRef(null);
@ -35,14 +37,17 @@ const JKSessionBackingTrackPlayer = ({
// Initialize player state when opened
setIsPlaying(false);
setCurrentTime('0:00');
setCurrentPositionMs(0);
// Fetch and set duration immediately when track loads
try {
const durationMs = jamClient.SessionGetTracksPlayDurationMs();
setDuration(formatTime(durationMs));
const durationInMs = jamClient.SessionGetTracksPlayDurationMs();
setDurationMs(durationInMs);
setDuration(formatTime(durationInMs));
} catch (error) {
console.error('Error fetching track duration:', error);
setDuration('0:00');
setDurationMs(0);
}
}
}, [isOpen, backingTrack, jamClient]);
@ -58,11 +63,13 @@ const JKSessionBackingTrackPlayer = ({
if (!jamClient) return;
const positionMs = jamClient.SessionCurrrentPlayPosMs();
const durationMs = jamClient.SessionGetTracksPlayDurationMs();
const durationInMs = jamClient.SessionGetTracksPlayDurationMs();
const trackIsPlaying = jamClient.isSessionTrackPlaying();
setCurrentPositionMs(positionMs);
setCurrentTime(formatTime(positionMs));
setDuration(formatTime(durationMs));
setDurationMs(durationInMs);
setDuration(formatTime(durationInMs));
// Sync playing state if changed
if (trackIsPlaying !== isPlaying) {
@ -103,6 +110,7 @@ const JKSessionBackingTrackPlayer = ({
await jamClient.SessionStopPlay();
setIsPlaying(false);
setCurrentTime('0:00');
setCurrentPositionMs(0);
} catch (error) {
console.error('Error stopping playback:', error);
}