Fix media item share changing share, show error on failed to play

This commit is contained in:
advplyr 2024-07-03 17:08:30 -05:00
parent 5858b64fc6
commit dd1d2b7c92
2 changed files with 28 additions and 4 deletions

View File

@ -237,6 +237,13 @@ export default {
resize() {
this.windowWidth = window.innerWidth
this.windowHeight = window.innerHeight
},
playerError(error) {
console.error('Player error', error)
this.$toast.error('Failed to play audio on device')
},
playerFinished() {
console.log('Player finished')
}
},
mounted() {
@ -252,12 +259,17 @@ export default {
this.localAudioPlayer.set(null, this.audioTracks, false, startTime, false)
this.localAudioPlayer.on('stateChange', this.playerStateChange.bind(this))
this.localAudioPlayer.on('timeupdate', this.playerTimeUpdate.bind(this))
this.localAudioPlayer.on('error', this.playerError.bind(this))
this.localAudioPlayer.on('finished', this.playerFinished.bind(this))
},
beforeDestroy() {
window.removeEventListener('resize', this.resize)
window.removeEventListener('keydown', this.keyDown)
this.localAudioPlayer.off('stateChange', this.playerStateChange)
this.localAudioPlayer.off('stateChange', this.playerStateChange.bind(this))
this.localAudioPlayer.off('timeupdate', this.playerTimeUpdate.bind(this))
this.localAudioPlayer.off('error', this.playerError.bind(this))
this.localAudioPlayer.off('finished', this.playerFinished.bind(this))
this.localAudioPlayer.destroy()
}
}

View File

@ -40,10 +40,22 @@ class ShareController {
if (req.cookies.share_session_id) {
const playbackSession = ShareManager.findPlaybackSessionBySessionId(req.cookies.share_session_id)
if (playbackSession) {
Logger.debug(`[ShareController] Found share playback session ${req.cookies.share_session_id}`)
mediaItemShare.playbackSession = playbackSession.toJSONForClient()
return res.json(mediaItemShare)
const playbackSessionMediaItemShare = ShareManager.findByMediaItemId(playbackSession.mediaItemId)
if (!playbackSessionMediaItemShare) {
Logger.error(`[ShareController] Share playback session ${req.cookies.share_session_id} media item share not found with id ${playbackSession.mediaItemId}`)
return res.sendStatus(500)
}
if (playbackSessionMediaItemShare.slug === slug) {
Logger.debug(`[ShareController] Found share playback session ${req.cookies.share_session_id}`)
mediaItemShare.playbackSession = playbackSession.toJSONForClient()
return res.json(mediaItemShare)
} else {
// TODO: Close old session and use same session id
Logger.info(`[ShareController] Share playback session found with id ${req.cookies.share_session_id} but media item share slug ${playbackSessionMediaItemShare.slug} does not match requested slug ${slug}`)
res.clearCookie('share_session_id')
}
} else {
Logger.info(`[ShareController] Share playback session not found with id ${req.cookies.share_session_id}`)
if (!uuid.validate(req.cookies.share_session_id) || uuid.version(req.cookies.share_session_id) !== 4) {