Fallback to tag duration to when calculating progress

This commit is contained in:
sentriz 2021-03-24 13:30:13 +00:00
parent 2fc640c34b
commit 2d60223581
No known key found for this signature in database
GPG Key ID: 9A8DAE1CA907B862

View File

@ -87,6 +87,7 @@ export const playerModule: Module<State, any> = {
state.scrobbled = false state.scrobbled = false
const track = state.queue[index] const track = state.queue[index]
audio.src = track.url audio.src = track.url
state.duration = track.duration
document.title = `${track.title}${track.artist}` document.title = `${track.title}${track.artist}`
if (mediaSession) { if (mediaSession) {
mediaSession.metadata = new MediaMetadata({ mediaSession.metadata = new MediaMetadata({
@ -250,17 +251,21 @@ export function setupAudio(store: Store<any>, api: API) {
store.commit('player/setCurrentTime', audio.currentTime) store.commit('player/setCurrentTime', audio.currentTime)
// Scrobble // Scrobble
if (store.state.player.scrobbled === false && if (
audio.duration > 30 && store.state.player.scrobbled === false &&
audio.currentTime / audio.duration > 0.7) { store.state.player.duration > 30 &&
audio.currentTime / store.state.player.duration > 0.7
) {
const id = store.getters['player/trackId'] const id = store.getters['player/trackId']
store.commit('player/setScrobbled') store.commit('player/setScrobbled')
api.scrobble(id) api.scrobble(id)
} }
} }
audio.ondurationchange = () => { audio.ondurationchange = () => {
if (isFinite(audio.duration)) {
store.commit('player/setDuration', audio.duration) store.commit('player/setDuration', audio.duration)
} }
}
audio.onerror = () => { audio.onerror = () => {
store.commit('player/setPaused') store.commit('player/setPaused')
store.commit('setError', audio.error) store.commit('setError', audio.error)