mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-07-31 16:24:45 +02:00
Update:Handle multiple sessions open, sync when paused, show alert of multiple sessions open when both are playing #1660
This commit is contained in:
parent
9712bdf5f0
commit
53c96b2540
5 changed files with 44 additions and 10 deletions
|
@ -52,6 +52,11 @@ export default class PlayerHandler {
|
|||
return this.libraryItem.media.episodes.find(ep => ep.id === this.episodeId)
|
||||
}
|
||||
|
||||
setSessionId(sessionId) {
|
||||
this.currentSessionId = sessionId
|
||||
this.ctx.$store.commit('setPlaybackSessionId', sessionId)
|
||||
}
|
||||
|
||||
load(libraryItem, episodeId, playWhenReady, playbackRate, startTimeOverride = undefined) {
|
||||
this.libraryItem = libraryItem
|
||||
this.isVideo = libraryItem.mediaType === 'video'
|
||||
|
@ -182,7 +187,7 @@ export default class PlayerHandler {
|
|||
}
|
||||
|
||||
async prepare(forceTranscode = false) {
|
||||
this.currentSessionId = null // Reset session
|
||||
this.setSessionId(null) // Reset session
|
||||
|
||||
const payload = {
|
||||
deviceInfo: {
|
||||
|
@ -218,7 +223,7 @@ export default class PlayerHandler {
|
|||
prepareSession(session) {
|
||||
this.failedProgressSyncs = 0
|
||||
this.startTime = this.startTimeOverride !== undefined ? this.startTimeOverride : session.currentTime
|
||||
this.currentSessionId = session.id
|
||||
this.setSessionId(session.id)
|
||||
this.displayTitle = session.displayTitle
|
||||
this.displayAuthor = session.displayAuthor
|
||||
|
||||
|
@ -263,7 +268,7 @@ export default class PlayerHandler {
|
|||
this.player = null
|
||||
this.playerState = 'IDLE'
|
||||
this.libraryItem = null
|
||||
this.currentSessionId = null
|
||||
this.setSessionId(null)
|
||||
this.startTime = 0
|
||||
this.stopPlayInterval()
|
||||
}
|
||||
|
@ -300,7 +305,7 @@ export default class PlayerHandler {
|
|||
if (this.player) {
|
||||
const listeningTimeToAdd = Math.max(0, Math.floor(this.listeningTimeSinceSync))
|
||||
// When opening player and quickly closing dont save progress
|
||||
if (listeningTimeToAdd > 20 || this.lastSyncTime > 0) {
|
||||
if (listeningTimeToAdd > 20) {
|
||||
syncData = {
|
||||
timeListened: listeningTimeToAdd,
|
||||
duration: this.getDuration(),
|
||||
|
@ -390,13 +395,13 @@ export default class PlayerHandler {
|
|||
this.player.setPlaybackRate(playbackRate)
|
||||
}
|
||||
|
||||
seek(time) {
|
||||
seek(time, shouldSync = true) {
|
||||
if (!this.player) return
|
||||
this.player.seek(time, this.playerPlaying)
|
||||
this.ctx.setCurrentTime(time)
|
||||
|
||||
// Update progress if paused
|
||||
if (!this.playerPlaying) {
|
||||
if (!this.playerPlaying && shouldSync) {
|
||||
this.sendProgressSync(time)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue