diff --git a/ui/src/audioplayer/Player.js b/ui/src/audioplayer/Player.js index fc44cbbdc..6fa2e0230 100644 --- a/ui/src/audioplayer/Player.js +++ b/ui/src/audioplayer/Player.js @@ -140,13 +140,14 @@ const Player = () => { const onAudioPlay = useCallback( (info) => { dispatch(currentPlaying(info)) - setStartTime(Date.now()) + if (startTime === null) { + setStartTime(Date.now()) + } if (info.duration) { const song = info.song document.title = `${song.title} - ${song.artist} - Navidrome` subsonic.nowPlaying(info.trackId) setPreload(false) - setScrobbled(false) if (config.gaTrackingId) { ReactGA.event({ category: 'Player', @@ -163,9 +164,18 @@ const Player = () => { } } }, - [dispatch, showNotifications] + [dispatch, showNotifications, startTime] ) + const onAudioPlayTrackChange = useCallback(() => { + if (scrobbled) { + setScrobbled(false) + } + if (startTime !== null) { + setStartTime(null) + } + }, [scrobbled, startTime]) + const onAudioPause = useCallback( (info) => dispatch(currentPlaying(info)), [dispatch] @@ -173,6 +183,8 @@ const Player = () => { const onAudioEnded = useCallback( (currentPlayId, audioLists, info) => { + setScrobbled(false) + setStartTime(null) dispatch(currentPlaying(info)) dataProvider .getOne('keepalive', { id: info.trackId }) @@ -212,6 +224,7 @@ const Player = () => { onAudioVolumeChange={onAudioVolumeChange} onAudioProgress={onAudioProgress} onAudioPlay={onAudioPlay} + onAudioPlayTrackChange={onAudioPlayTrackChange} onAudioPause={onAudioPause} onAudioEnded={onAudioEnded} onCoverClick={onCoverClick}