Update LocalAudioPlayer and chapters view for improved functionality

This commit is contained in:
lykos 2025-10-05 18:54:32 +13:00
parent 123351e08a
commit 98a01b8b10
2 changed files with 15 additions and 9 deletions

View File

@ -595,6 +595,12 @@ export default {
this.hasChanges = hasChanges this.hasChanges = hasChanges
}, },
playChapter(chapter) { playChapter(chapter) {
// Pause any existing audiobook playback to prevent multiple streams
if (this.$store.state.streamLibraryItem) {
this.$eventBus.$emit('pause-item')
}
console.log('$store.state.streamLibraryItem', this.$store.state)
console.log('Play Chapter', chapter.id) console.log('Play Chapter', chapter.id)
if (this.selectedChapterId === chapter.id) { if (this.selectedChapterId === chapter.id) {
console.log('Chapter already playing', this.isLoadingChapter, this.isPlayingChapter) console.log('Chapter already playing', this.isLoadingChapter, this.isPlayingChapter)
@ -641,15 +647,8 @@ export default {
}) })
audioEl.addEventListener('ended', () => { audioEl.addEventListener('ended', () => {
console.log('Audio ended') console.log('Audio ended')
const nextTrack = this.tracks.find((t) => t.index === this.currentTrackIndex + 1) // stop at end of chapter
if (nextTrack) { this.destroyAudioEl()
console.log('Playing next track', nextTrack.index)
this.currentTrackIndex = nextTrack.index
this.playTrackAtTime(nextTrack, 0)
} else {
console.log('No next track')
this.destroyAudioEl()
}
}) })
this.audioEl = audioEl this.audioEl = audioEl
}, },
@ -995,11 +994,13 @@ export default {
this.initChapters() this.initChapters()
this.$eventBus.$on(`${this.libraryItem.id}_updated`, this.libraryItemUpdated) this.$eventBus.$on(`${this.libraryItem.id}_updated`, this.libraryItemUpdated)
this.$eventBus.$on('pause-chapter', this.destroyAudioEl)
}, },
beforeDestroy() { beforeDestroy() {
this.destroyAudioEl() this.destroyAudioEl()
this.$eventBus.$off(`${this.libraryItem.id}_updated`, this.libraryItemUpdated) this.$eventBus.$off(`${this.libraryItem.id}_updated`, this.libraryItemUpdated)
this.$eventBus.$off('pause-chapter', this.destroyAudioEl)
} }
} }
</script> </script>

View File

@ -231,6 +231,11 @@ export default class LocalAudioPlayer extends EventEmitter {
} }
play() { play() {
// Emit pause-chapter event to stop any other chapter playing
if (this.ctx.$eventBus) {
this.ctx.$eventBus.$emit('pause-chapter')
}
this.playWhenReady = true this.playWhenReady = true
if (this.player) this.player.play() if (this.player) this.player.play()
} }