feat(01-01): add 500ms playback monitoring with jamClient polling

- Polls jamClient.SessionCurrrentPlayPosMs() every 500ms when playing
- Updates currentTime and duration displays with formatted values
- Syncs isPlaying state with jamClient.isSessionTrackPlaying()
- Cleans up interval on pause/stop to prevent memory leaks
- Error handling logs to console but continues polling

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Nuwan 2026-01-13 20:22:06 +05:30
parent df94ec7d08
commit e33983e150
1 changed files with 35 additions and 0 deletions

View File

@ -39,6 +39,41 @@ const JKSessionBackingTrackPlayer = ({
}
}, [isOpen, backingTrack]);
// Playback monitoring with 500ms polling
useEffect(() => {
let intervalId = null;
if (isPlaying && jamClient) {
// Start polling when playing
intervalId = setInterval(() => {
try {
if (!jamClient) return;
const positionMs = jamClient.SessionCurrrentPlayPosMs();
const durationMs = jamClient.SessionGetTracksPlayDurationMs();
const trackIsPlaying = jamClient.isSessionTrackPlaying();
setCurrentTime(formatTime(positionMs));
setDuration(formatTime(durationMs));
// Sync playing state if changed
if (trackIsPlaying !== isPlaying) {
setIsPlaying(trackIsPlaying);
}
} catch (error) {
console.error('Error polling playback status:', error);
}
}, 500);
}
// Cleanup: clear interval on pause/stop or unmount
return () => {
if (intervalId) {
clearInterval(intervalId);
}
};
}, [isPlaying, jamClient, backingTrack]);
const handlePlay = async () => {
try {
if (isPlaying) {