From 5229f798051db46e1f617bb64f74d89d33a30217 Mon Sep 17 00:00:00 2001 From: Michael Finger Date: Mon, 5 Aug 2024 12:37:16 +0000 Subject: [PATCH] Allow skipping to next item in queue It's as simple as it sounds: When at the last chapter of a book (or podcast I guess?), the "Next Chapter" Button instead skips to the next item in the queue. --- .../player/PlayerPlaybackControls.vue | 21 ++++++++++---- client/components/player/PlayerUi.vue | 28 ++++++++++++++++++- client/strings/de.json | 3 +- client/strings/en-us.json | 3 +- 4 files changed, 47 insertions(+), 8 deletions(-) diff --git a/client/components/player/PlayerPlaybackControls.vue b/client/components/player/PlayerPlaybackControls.vue index 1a92480b6..903d65ef5 100644 --- a/client/components/player/PlayerPlaybackControls.vue +++ b/client/components/player/PlayerPlaybackControls.vue @@ -20,8 +20,8 @@ forward_media - - @@ -43,7 +43,8 @@ export default { seekLoading: Boolean, playbackRate: Number, paused: Boolean, - hasNextChapter: Boolean + hasNextChapter: Boolean, + hasNextAudiobook: Boolean }, data() { return {} @@ -72,8 +73,18 @@ export default { this.$emit('prevChapter') }, nextChapter() { - if (!this.hasNextChapter) return - this.$emit('nextChapter') + if (this.hasNextChapter) { + this.$emit('nextChapter') + return + } + if (this.hasNextAudiobook) { + this.$emit('nextAudiobook') + return + } + }, + nextLabel() { + if (this.hasNextChapter) return this.$strings.ButtonNextChapter + return this.$strings.ButtonNextAudiobook }, jumpBackward() { this.$emit('jumpBackward') diff --git a/client/components/player/PlayerUi.vue b/client/components/player/PlayerUi.vue index 684520618..f2ae46762 100644 --- a/client/components/player/PlayerUi.vue +++ b/client/components/player/PlayerUi.vue @@ -43,7 +43,21 @@ - + @@ -166,6 +180,9 @@ export default { if (!this.chapters.length) return false return this.currentChapterIndex < this.chapters.length - 1 }, + hasNextAudiobook() { + return this.playerQueueItems.length > 1 + }, playerQueueItems() { return this.$store.state.playerQueueItems || [] }, @@ -283,6 +300,15 @@ export default { var nextChapter = this.chapters[this.currentChapterIndex + 1] this.seek(nextChapter.start) }, + nextAudiobook() { + let nextBook = this.playerQueueItems[1] + + this.$eventBus.$emit('play-item', { + libraryItemId: nextBook.libraryItemId, + episodeId: nextBook.episodeId || null, + queueItems: this.playerQueueItems + }) + }, setStreamReady() { if (this.$refs.trackbar) this.$refs.trackbar.setPercentageReady(1) }, diff --git a/client/strings/de.json b/client/strings/de.json index cb6cc6fcf..e13471586 100644 --- a/client/strings/de.json +++ b/client/strings/de.json @@ -45,6 +45,7 @@ "ButtonMatchBooks": "Online Metadaten-Abgleich (alle Medien)", "ButtonNevermind": "Abbrechen", "ButtonNext": "Vor", + "ButtonNextAudiobook": "Nächstes Buch", "ButtonNextChapter": "Nächstes Kapitel", "ButtonOk": "Ok", "ButtonOpenFeed": "Feed öffnen", @@ -852,4 +853,4 @@ "ToastSortingPrefixesUpdateSuccess": "Die Sortier-Prefixe wirden geupdated ({0} Einträge)", "ToastUserDeleteFailed": "Benutzer konnte nicht gelöscht werden", "ToastUserDeleteSuccess": "Benutzer gelöscht" -} +} \ No newline at end of file diff --git a/client/strings/en-us.json b/client/strings/en-us.json index 111f9ef95..60895d296 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -45,6 +45,7 @@ "ButtonMatchBooks": "Match Books", "ButtonNevermind": "Nevermind", "ButtonNext": "Next", + "ButtonNextAudiobook": "Next Book", "ButtonNextChapter": "Next Chapter", "ButtonOk": "Ok", "ButtonOpenFeed": "Open Feed", @@ -852,4 +853,4 @@ "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)", "ToastUserDeleteFailed": "Failed to delete user", "ToastUserDeleteSuccess": "User deleted" -} +} \ No newline at end of file