Skip to content

Commit

Permalink
Fix media item share changing share, show error on failed to play
Browse files Browse the repository at this point in the history
  • Loading branch information
advplyr committed Jul 3, 2024
1 parent 5858b64 commit dd1d2b7
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
14 changes: 13 additions & 1 deletion client/pages/share/_slug.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand All @@ -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()
}
}
Expand Down
18 changes: 15 additions & 3 deletions server/controllers/ShareController.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit dd1d2b7

Please sign in to comment.