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:
parent
2e312849a6
commit
209cefcf22
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue