Show error when media format is unsupported (#409)
* fix error about pop * location-history: add optional callbacks * set handler on first tick discovered by @dcposch * Show error when media format is unsupported Before this change, the player would just get stuck on the loading screen forever without notifying the user.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 () {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user