From 13eddbfc2111f0c1cd0c2e8c60e87d68b426bade Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Fri, 15 Dec 2017 22:03:15 +0100 Subject: [PATCH] Fixed #46: better handling of HTTP errors when fetching audio file --- CHANGELOG | 1 + front/src/audio/index.js | 7 ++++++- front/src/audio/queue.js | 7 +++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 87c584200..3b31937fc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,6 +6,7 @@ Changelog ------------------ - Import: can now specify search template when querying import sources (#45) +- Player: better handling of errors when fetching the audio file (#46) 0.2.4 (2017-12-14) diff --git a/front/src/audio/index.js b/front/src/audio/index.js index 7750ee500..4896b83b0 100644 --- a/front/src/audio/index.js +++ b/front/src/audio/index.js @@ -26,6 +26,7 @@ class Audio { if (options.onEnded) { this.onEnded = options.onEnded } + this.onError = options.onError this.state = { preload: preload, @@ -60,8 +61,12 @@ class Audio { init (src, options = {}) { if (!src) throw Error('src must be required') this.state.startLoad = true - if (this.state.tried === this.state.try) { + if (this.state.tried >= this.state.try) { this.state.failed = true + logger.default.error('Cannot fetch audio', src) + if (this.onError) { + this.onError(src) + } return } this.$Audio = new window.Audio(src) diff --git a/front/src/audio/queue.js b/front/src/audio/queue.js index bde0bf863..8c69638e8 100644 --- a/front/src/audio/queue.js +++ b/front/src/audio/queue.js @@ -140,7 +140,6 @@ class Queue { } else { index = index || this.tracks.length } - console.log('INDEEEEEX', index) tracks.forEach((t) => { self.append(t, index, true) index += 1 @@ -243,7 +242,11 @@ class Queue { rate: 1, loop: false, volume: this.state.volume, - onEnded: this.handleAudioEnded.bind(this) + onEnded: this.handleAudioEnded.bind(this), + onError: function (src) { + self.errored = true + self.next() + } }) this.audio = audio audio.updateHook('playState', function (e) {