diff --git a/changes/changelog.d/1291.bugfix b/changes/changelog.d/1291.bugfix new file mode 100644 index 000000000..06cd0a7db --- /dev/null +++ b/changes/changelog.d/1291.bugfix @@ -0,0 +1 @@ +Fix tracks playing in the background without the ability to control them (#1213) (#1387) diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue index e8bbb8dd8..208ec00f5 100644 --- a/front/src/components/audio/Player.vue +++ b/front/src/components/audio/Player.vue @@ -304,21 +304,15 @@ export default { toggleMute: "player/toggleMute", }), async getTrackData (trackData) { - let data = null - if (!trackData.uploads.length || trackData.uploads.length === 0) { - // we don't have upload informations for this track, we need to fetch it - await axios.get(`tracks/${trackData.id}/`).then((response) => { - data = response.data - }, error => { - data = null - }) - } else { - return trackData - } - if (data === null) { - return - } - return data + // use previously fetched trackData + if (trackData.uploads.length) return trackData + + // we don't have any information for this track, we need to fetch it + return axios.get(`tracks/${trackData.id}/`) + .then( + response => response.data, + err => null + ) }, shuffle() { let disabled = this.queue.tracks.length === 0 @@ -611,8 +605,11 @@ export default { async loadSound (newValue, oldValue) { let trackData = newValue let oldSound = this.currentSound + // stop all other sounds! + // we do this here (before the track has loaded) to get a predictable + // song order. + Howler.stop() if (oldSound && trackData !== oldValue) { - oldSound.stop(this.soundId) this.soundId = null } if (!trackData) { @@ -620,7 +617,7 @@ export default { } if (!this.isShuffling && trackData != oldValue) { trackData = await this.getTrackData(trackData) - if (trackData === null) { + if (trackData == null) { this.handleError({}) } this.currentSound = this.getSound(trackData)