diff --git a/renderer/index.js b/renderer/index.js index 0252835f..511f6de7 100644 --- a/renderer/index.js +++ b/renderer/index.js @@ -285,6 +285,11 @@ function dispatch (action, ...args) { if (action === 'mediaStalled') { state.playing.isStalled = true } + if (action === 'mediaError') { + state.location.back(function () { + onError(new Error('Unsupported file format')) + }) + } if (action === 'mediaTimeUpdate') { state.playing.lastTimeUpdate = new Date().getTime() state.playing.isStalled = false diff --git a/renderer/lib/dispatcher.js b/renderer/lib/dispatcher.js index ca1890a3..13778d99 100644 --- a/renderer/lib/dispatcher.js +++ b/renderer/lib/dispatcher.js @@ -20,7 +20,7 @@ function dispatcher (...args) { var json = JSON.stringify(args) var handler = _dispatchers[json] if (!handler) { - _dispatchers[json] = (e) => { + handler = _dispatchers[json] = (e) => { // Don't click on whatever is below the button e.stopPropagation() // Don't regisiter clicks on disabled buttons diff --git a/renderer/lib/location-history.js b/renderer/lib/location-history.js index 94b83acf..c57cc82f 100644 --- a/renderer/lib/location-history.js +++ b/renderer/lib/location-history.js @@ -7,28 +7,30 @@ function LocationHistory () { this._pending = null } -LocationHistory.prototype.go = function (page) { +LocationHistory.prototype.go = function (page, cb) { console.log('go', page) this.clearForward() - this._go(page) + this._go(page, cb) } -LocationHistory.prototype._go = function (page) { +LocationHistory.prototype._go = function (page, cb) { if (this._pending) return if (page.onbeforeload) { this._pending = page page.onbeforeload((err) => { if (this._pending !== page) return /* navigation was cancelled */ this._pending = null - if (err) return + if (err) return cb(err) this._history.push(page) + if (cb) cb() }) } else { this._history.push(page) + if (cb) cb() } } -LocationHistory.prototype.back = function () { +LocationHistory.prototype.back = function (cb) { if (this._history.length <= 1) return var page = this._history.pop() @@ -39,17 +41,19 @@ LocationHistory.prototype.back = function () { // call finishes first. page.onbeforeunload(() => { this._forward.push(page) + if (cb) cb() }) } else { this._forward.push(page) + if (cb) cb() } } -LocationHistory.prototype.forward = function () { +LocationHistory.prototype.forward = function (cb) { if (this._forward.length === 0) return var page = this._forward.pop() - this._go(page) + this._go(page, cb) } LocationHistory.prototype.clearForward = function () { diff --git a/renderer/lib/sound.js b/renderer/lib/sound.js index a497e0ce..33636abb 100644 --- a/renderer/lib/sound.js +++ b/renderer/lib/sound.js @@ -34,10 +34,6 @@ var sounds = { url: 'file://' + path.join(config.STATIC_PATH, 'sound', 'error.wav'), volume: 0.2 }, - POP: { - url: 'file://' + path.join(config.STATIC_PATH, 'sound', 'pop.wav'), - volume: 0.2 - }, PLAY: { url: 'file://' + path.join(config.STATIC_PATH, 'sound', 'play.wav'), volume: 0.2 diff --git a/renderer/views/player.js b/renderer/views/player.js index 4d937392..474ca9e2 100644 --- a/renderer/views/player.js +++ b/renderer/views/player.js @@ -81,6 +81,7 @@ function renderMedia (state) { onplay=${dispatcher('mediaPlaying')} onpause=${dispatcher('mediaPaused')} onstalling=${dispatcher('mediaStalled')} + onerror=${dispatcher('mediaError')} ontimeupdate=${dispatcher('mediaTimeUpdate')} autoplay> ${trackTags}