From ec704bf501b39307d8907223644009b337771bf2 Mon Sep 17 00:00:00 2001 From: Lars Kiesow Date: Sat, 11 Feb 2023 22:57:06 +0100 Subject: [PATCH] Easy way to play current audiobook This patch implements a generic way of re-opening the player for the book you last listened to. This is especially handy when first opening the app and you can restart playback with a single click. The player is opened only if no other book is already open in the player. It will not overwrite or replace playbacks or player already in progress. The player is opened paused. No automatic playback since that could be really annoying. This closes #494 --- components/app/AudioPlayerContainer.vue | 3 ++- pages/bookshelf/index.vue | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/components/app/AudioPlayerContainer.vue b/components/app/AudioPlayerContainer.vue index 060a2878..2cd17531 100644 --- a/components/app/AudioPlayerContainer.vue +++ b/components/app/AudioPlayerContainer.vue @@ -188,6 +188,7 @@ export default { const libraryItemId = payload.libraryItemId const episodeId = payload.episodeId const startTime = payload.startTime + const startWhenReady = !payload.paused // When playing local library item and can also play this item from the server // then store the server library item id so it can be used if a cast is made @@ -223,7 +224,7 @@ export default { } console.log('Called playLibraryItem', libraryItemId) - const preparePayload = { libraryItemId, episodeId, playWhenReady: true, playbackRate } + const preparePayload = { libraryItemId, episodeId, playWhenReady: startWhenReady, playbackRate } if (startTime !== undefined && startTime !== null) preparePayload.startTime = startTime AbsAudioPlayer.prepareLibraryItem(preparePayload) .then((data) => { diff --git a/pages/bookshelf/index.vue b/pages/bookshelf/index.vue index 2eaffa05..8eb417e6 100644 --- a/pages/bookshelf/index.vue +++ b/pages/bookshelf/index.vue @@ -247,6 +247,15 @@ export default { return cat }) + // If we don't already have a player open + // Try opening the first book from continue-listening without playing it + if (!this.$store.state.playerLibraryItemId) { + const lastListening = categories.filter((cat) => cat.id === 'continue-listening')[0]?.entities?.[0]?.id + if (lastListening) { + this.$eventBus.$emit('play-item', { libraryItemId: lastListening, paused: true }) + } + } + // Only add the local shelf with the same media type const localShelves = localCategories.filter((cat) => cat.type === this.currentLibraryMediaType && !cat.localOnly) this.shelves.push(...localShelves)