Skip to content

Commit

Permalink
Update media item shares to close when changing shares on same device
Browse files Browse the repository at this point in the history
  • Loading branch information
advplyr committed Jul 4, 2024
1 parent dd1d2b7 commit 4321765
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 11 deletions.
13 changes: 4 additions & 9 deletions server/controllers/ShareController.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,14 @@ class ShareController {
const playbackSession = ShareManager.findPlaybackSessionBySessionId(req.cookies.share_session_id)

if (playbackSession) {
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) {
if (mediaItemShare.id === playbackSession.mediaItemShareId) {
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')
// Changed media item share - close other session
Logger.debug(`[ShareController] Other playback session is already open for share session. Closing session "${playbackSession.displayTitle}"`)
ShareManager.closeSharePlaybackSession(playbackSession)
}
} else {
Logger.info(`[ShareController] Share playback session not found with id ${req.cookies.share_session_id}`)
Expand Down
11 changes: 10 additions & 1 deletion server/managers/ShareManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,19 @@ class ShareManager {
* @param {import('../objects/PlaybackSession')} playbackSession
*/
addOpenSharePlaybackSession(playbackSession) {
Logger.info(`[ShareManager] Adding new open share playback session ${playbackSession.shareSessionId}`)
Logger.info(`[ShareManager] Adding new open share playback session "${playbackSession.displayTitle}"`)
this.openSharePlaybackSessions.push(playbackSession)
}

/**
*
* @param {import('../objects/PlaybackSession')} playbackSession
*/
closeSharePlaybackSession(playbackSession) {
Logger.info(`[ShareManager] Closing share playback session "${playbackSession.displayTitle}"`)
this.openSharePlaybackSessions = this.openSharePlaybackSessions.filter((s) => s.id !== playbackSession.id)
}

/**
* Find an open media item share by media item ID
* @param {string} mediaItemId
Expand Down
1 change: 0 additions & 1 deletion server/models/LibraryItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -568,7 +568,6 @@ class LibraryItem extends Model {
oldLibraryItem.numEpisodesIncomplete = li.numEpisodesIncomplete
}
if (li.mediaType === 'book' && options.include?.includes?.('share')) {
console.log('Lookup share for media item id', li.mediaId)
oldLibraryItem.mediaItemShare = ShareManager.findByMediaItemId(li.mediaId)
}

Expand Down

0 comments on commit 4321765

Please sign in to comment.