Add: "Play Next" button for book and podcast cards

This commit is contained in:
Maaz Hassan 2023-12-27 09:41:52 +00:00
parent 0d0bdce337
commit c18f722929
19 changed files with 63 additions and 2 deletions

View file

@ -463,7 +463,11 @@ export default {
if (!this.isQueued) {
items.push({
func: 'addToQueue',
text: this.$strings.ButtonQueueAddItem
text: this.$strings.ButtonQueuePlayNext
},
{
func: 'playNext',
text: this.$strings.ButtonQueuePlayNext
})
} else if (!this.isStreaming) {
items.push({
@ -542,6 +546,10 @@ export default {
items.push({
func: 'addToQueue',
text: this.$strings.ButtonQueueAddItem
},
{
func: 'playNext',
text: this.$strings.ButtonQueuePlayNext
})
} else if (!this.isStreaming) {
items.push({
@ -830,6 +838,33 @@ export default {
}
this.store.commit('addItemToQueue', queueItem)
},
playNext() {
var queueItem = {}
if (this.recentEpisode) {
queueItem = {
libraryItemId: this.libraryItemId,
libraryId: this.libraryId,
episodeId: this.recentEpisode.id,
title: this.recentEpisode.title,
subtitle: this.mediaMetadata.title,
caption: this.recentEpisode.publishedAt ? `Published ${this.$formatDate(this.recentEpisode.publishedAt, this.dateFormat)}` : 'Unknown publish date',
duration: this.recentEpisode.audioFile.duration || null,
coverPath: this.media.coverPath || null
}
} else {
queueItem = {
libraryItemId: this.libraryItemId,
libraryId: this.libraryId,
episodeId: null,
title: this.title,
subtitle: this.author,
caption: '',
duration: this.media.duration || null,
coverPath: this.media.coverPath || null
}
}
this.store.commit('addItemToTopOfQueue', queueItem)
},
removeFromQueue() {
const episodeId = this.recentEpisode ? this.recentEpisode.id : null
this.store.commit('removeItemFromQueue', { libraryItemId: this.libraryItemId, episodeId })

View file

@ -188,6 +188,15 @@ export const mutations = {
state.playerQueueItems.push(item)
}
},
addItemToTopOfQueue(state, item) {
const exists = state.playerQueueItems.some(i => {
if (!i.episodeId) return i.libraryItemId === item.libraryItemId
return i.libraryItemId === item.libraryItemId && i.episodeId === item.episodeId
})
if (!exists) {
state.playerQueueItems.splice(1, 0, item)
}
},
setPlayerQueueAutoPlay(state, autoPlay) {
state.playerQueueAutoPlay = !!autoPlay
localStorage.setItem('playerQueueAutoPlay', !!autoPlay ? '1' : '0')

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Vyčistit mezipaměť položek",
"ButtonPurgeMediaProgress": "Vyčistit průběh médií",
"ButtonQueueAddItem": "Přidat do fronty",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Odstranit z fronty",
"ButtonQuickMatch": "Rychlé přiřazení",
"ButtonRead": "Číst",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Ryd elementcache",
"ButtonPurgeMediaProgress": "Ryd Medieforløb",
"ButtonQueueAddItem": "Tilføj til kø",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Fjern fra kø",
"ButtonQuickMatch": "Hurtig Match",
"ButtonRead": "Læs",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Lösche Medien-Zwischenspeicher",
"ButtonPurgeMediaProgress": "Lösche Hörfortschritte",
"ButtonQueueAddItem": "Zur Warteschlange hinzufügen",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Aus der Warteschlange entfernen",
"ButtonQuickMatch": "Schnellabgleich",
"ButtonRead": "Lese",
@ -750,4 +751,4 @@
"ToastSocketFailedToConnect": "Verbindung zum WebSocket fehlgeschlagen",
"ToastUserDeleteFailed": "Benutzer konnte nicht gelöscht werden",
"ToastUserDeleteSuccess": "Benutzer gelöscht"
}
}

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Purge Items Cache",
"ButtonPurgeMediaProgress": "Purge Media Progress",
"ButtonQueueAddItem": "Add to queue",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Remove from queue",
"ButtonQuickMatch": "Quick Match",
"ButtonRead": "Read",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Purgar Elementos de Cache",
"ButtonPurgeMediaProgress": "Purgar Progreso de Multimedia",
"ButtonQueueAddItem": "Agregar a la Fila",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Remover de la Fila",
"ButtonQuickMatch": "Encontrar Rápido",
"ButtonRead": "Leer",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Purger le cache des articles",
"ButtonPurgeMediaProgress": "Purger la progression des médias",
"ButtonQueueAddItem": "Ajouter à la liste de lecture",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Supprimer de la liste de lecture",
"ButtonQuickMatch": "Recherche rapide",
"ButtonRead": "Lire",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "વસ્તુઓનો Cache કાઢી નાખો",
"ButtonPurgeMediaProgress": "બધું સાંભળ્યું કાઢી નાખો",
"ButtonQueueAddItem": "કતારમાં ઉમેરો",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "કતારથી કાઢી નાખો",
"ButtonQuickMatch": "ઝડપી મેળ ખવડાવો",
"ButtonRead": "વાંચો",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "आइटम Cache मिटाएं",
"ButtonPurgeMediaProgress": "अभी तक सुना हुआ सब हटा दे",
"ButtonQueueAddItem": "क़तार में जोड़ें",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "कतार से हटाएं",
"ButtonQuickMatch": "जल्दी से समानता की तलाश करें",
"ButtonRead": "पढ़ लिया",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Isprazni Items Cache",
"ButtonPurgeMediaProgress": "Purge Media Progress",
"ButtonQueueAddItem": "Add to queue",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Remove from queue",
"ButtonQuickMatch": "Brzi match",
"ButtonRead": "Pročitaj",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Elimina la Cache selezionata",
"ButtonPurgeMediaProgress": "Elimina info dei media ascoltati",
"ButtonQueueAddItem": "Aggiungi alla Coda",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Rimuovi dalla Coda",
"ButtonQuickMatch": "Controlla Metadata Auto",
"ButtonRead": "Leggi",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Valyti elementų saugyklą",
"ButtonPurgeMediaProgress": "Valyti medijos progresą",
"ButtonQueueAddItem": "Pridėti į eilę",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Pašalinti iš eilės",
"ButtonQuickMatch": "Greitas pritaikymas",
"ButtonRead": "Skaityti",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Onderdelen-cache legen",
"ButtonPurgeMediaProgress": "Mediavoortgang legen",
"ButtonQueueAddItem": "In wachtrij zetten",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Uit wachtrij verwijderen",
"ButtonQuickMatch": "Snelle match",
"ButtonRead": "Lees",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Tøm mellomlager",
"ButtonPurgeMediaProgress": "Slett medie fremgang",
"ButtonQueueAddItem": "Legg til kø",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Fjern fra kø",
"ButtonQuickMatch": "Kjapt søk",
"ButtonRead": "Les",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Wyczyść dane tymczasowe pozycji",
"ButtonPurgeMediaProgress": "Wyczyść postęp",
"ButtonQueueAddItem": "Dodaj do kolejki",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Usuń z kolejki",
"ButtonQuickMatch": "Szybkie dopasowanie",
"ButtonRead": "Czytaj",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Очистить кэш элементов",
"ButtonPurgeMediaProgress": "Очистить прогресс медиа",
"ButtonQueueAddItem": "Добавить в очередь",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Удалить из очереди",
"ButtonQuickMatch": "Быстрый поиск",
"ButtonRead": "Читать",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Rensa föremåls-cache",
"ButtonPurgeMediaProgress": "Rensa medieförlopp",
"ButtonQueueAddItem": "Lägg till i kön",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Ta bort från kön",
"ButtonQuickMatch": "Snabb matchning",
"ButtonRead": "Läs",

View file

@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "清理项目缓存",
"ButtonPurgeMediaProgress": "清理媒体进度",
"ButtonQueueAddItem": "添加到队列",
"ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "从队列中移除",
"ButtonQuickMatch": "快速匹配",
"ButtonRead": "读取",