Only reset player scrobbled state on track change or end (#1432)

* Only reset player scrobbled state on track change or end

* Only reset player start time on track change or end
This commit is contained in:
Steve Richter 2021-10-30 12:09:40 -04:00 committed by GitHub
parent d3e142233b
commit ccc871d1f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 3 deletions

View File

@ -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}