Add:Remove from playlist option in more menu for items on playlist page #987

This commit is contained in:
advplyr 2024-03-02 15:25:18 -06:00
parent e0860feeb9
commit 3318846b43
21 changed files with 79 additions and 6 deletions

View file

@ -26,6 +26,10 @@ export default {
type: Object, type: Object,
default: () => null default: () => null
}, },
playlist: {
type: Object,
default: () => null
},
hideRssFeedOption: Boolean hideRssFeedOption: Boolean
}, },
data() { data() {
@ -92,6 +96,15 @@ export default {
} }
} }
// If on playlist page show remove from playlist option
if (this.playlist) {
items.push({
text: this.$strings.LabelRemoveFromPlaylist,
value: 'removeFromPlaylist',
icon: 'playlist_remove'
})
}
if (this.showRSSFeedOption) { if (this.showRSSFeedOption) {
items.push({ items.push({
text: this.rssFeed ? this.$strings.HeaderRSSFeed : this.$strings.HeaderOpenRSSFeed, text: this.rssFeed ? this.$strings.HeaderRSSFeed : this.$strings.HeaderOpenRSSFeed,
@ -255,6 +268,8 @@ export default {
} else if (action === 'playlist') { } else if (action === 'playlist') {
this.$store.commit('globals/setSelectedPlaylistItems', [{ libraryItem: this.libraryItem, episode: this.episode }]) this.$store.commit('globals/setSelectedPlaylistItems', [{ libraryItem: this.libraryItem, episode: this.episode }])
this.$store.commit('globals/setShowPlaylistsAddCreateModal', true) this.$store.commit('globals/setShowPlaylistsAddCreateModal', true)
} else if (action === 'removeFromPlaylist') {
this.removeFromPlaylistClick()
} else if (action === 'markFinished') { } else if (action === 'markFinished') {
if (this.episode) this.toggleEpisodeFinished() if (this.episode) this.toggleEpisodeFinished()
else this.toggleFinished() else this.toggleFinished()
@ -456,6 +471,29 @@ export default {
.finally(() => { .finally(() => {
this.$emit('update:processing', false) this.$emit('update:processing', false)
}) })
},
removeFromPlaylistClick() {
if (!this.playlist) {
this.$toast.error('Invalid: No Playlist')
return
}
this.$emit('update:processing', true)
let url = `/api/playlists/${this.playlist.id}/item/${this.serverLibraryItemId}`
if (this.serverEpisodeId) url += `/${this.serverEpisodeId}`
this.$axios
.$delete(url)
.then(() => {
this.$toast.success('Item removed from playlist')
})
.catch((error) => {
const errorMsg = error.response?.data || 'Unknown error'
console.error('Failed to remove item from playlist', error)
this.$toast.error('Failed to remove from playlist: ' + errorMsg)
})
.finally(() => {
this.$emit('update:processing', false)
})
} }
}, },
mounted() {} mounted() {}

View file

@ -24,7 +24,7 @@
</div> </div>
</div> </div>
<modals-item-more-menu-modal v-model="showMoreMenu" :library-item="selectedLibraryItem" :episode="selectedEpisode" hide-rss-feed-option :processing.sync="processing" /> <modals-item-more-menu-modal v-model="showMoreMenu" :library-item="selectedLibraryItem" :episode="selectedEpisode" :playlist="playlist" hide-rss-feed-option :processing.sync="processing" />
<div v-show="processing" class="fixed top-0 left-0 w-screen h-screen flex items-center justify-center bg-black/50 z-50"> <div v-show="processing" class="fixed top-0 left-0 w-screen h-screen flex items-center justify-center bg-black/50 z-50">
<ui-loading-indicator /> <ui-loading-indicator />
</div> </div>
@ -140,8 +140,24 @@ export default {
this.$eventBus.$emit('play-item', { libraryItemId: nextItem.libraryItemId, episodeId: nextItem.episodeId }) this.$eventBus.$emit('play-item', { libraryItemId: nextItem.libraryItemId, episodeId: nextItem.episodeId })
} }
} }
},
playlistUpdated(playlist) {
if (this.playlist.id !== playlist.id) return
this.playlist = playlist
},
playlistRemoved(playlist) {
if (this.playlist.id === playlist.id) {
this.$router.replace('/bookshelf/playlists')
}
} }
}, },
mounted() {} mounted() {
this.$socket.$on('playlist_updated', this.playlistUpdated)
this.$socket.$on('playlist_removed', this.playlistRemoved)
},
beforeDestroy() {
this.$socket.$off('playlist_updated', this.playlistUpdated)
this.$socket.$off('playlist_removed', this.playlistRemoved)
}
} }
</script> </script>

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Číst znovu", "LabelReadAgain": "Číst znovu",
"LabelRecentlyAdded": "Nedávno přidáno", "LabelRecentlyAdded": "Nedávno přidáno",
"LabelRecentSeries": "Nedávné série", "LabelRecentSeries": "Nedávné série",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Vlastní e-mail vlastníka", "LabelRSSFeedCustomOwnerEmail": "Vlastní e-mail vlastníka",
"LabelRSSFeedCustomOwnerName": "Vlastní jméno vlastníka", "LabelRSSFeedCustomOwnerName": "Vlastní jméno vlastníka",
"LabelRSSFeedPreventIndexing": "Zabránit indexování", "LabelRSSFeedPreventIndexing": "Zabránit indexování",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Recently Added", "LabelRecentlyAdded": "Recently Added",
"LabelRecentSeries": "Recent Series", "LabelRecentSeries": "Recent Series",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Brugerdefineret ejerens e-mail", "LabelRSSFeedCustomOwnerEmail": "Brugerdefineret ejerens e-mail",
"LabelRSSFeedCustomOwnerName": "Brugerdefineret ejerens navn", "LabelRSSFeedCustomOwnerName": "Brugerdefineret ejerens navn",
"LabelRSSFeedPreventIndexing": "Forhindrer indeksering", "LabelRSSFeedPreventIndexing": "Forhindrer indeksering",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Erneut lesen", "LabelReadAgain": "Erneut lesen",
"LabelRecentlyAdded": "Kürzlich hinzugefügt", "LabelRecentlyAdded": "Kürzlich hinzugefügt",
"LabelRecentSeries": "Aktuelle Serien", "LabelRecentSeries": "Aktuelle Serien",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Benutzerdefinierte Eigentümer-E-Mail", "LabelRSSFeedCustomOwnerEmail": "Benutzerdefinierte Eigentümer-E-Mail",
"LabelRSSFeedCustomOwnerName": "Benutzerdefinierter Name des Eigentümers", "LabelRSSFeedCustomOwnerName": "Benutzerdefinierter Name des Eigentümers",
"LabelRSSFeedPreventIndexing": "Indizierung verhindern", "LabelRSSFeedPreventIndexing": "Indizierung verhindern",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Recently Added", "LabelRecentlyAdded": "Recently Added",
"LabelRecentSeries": "Recent Series", "LabelRecentSeries": "Recent Series",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Custom owner Email", "LabelRSSFeedCustomOwnerEmail": "Custom owner Email",
"LabelRSSFeedCustomOwnerName": "Custom owner Name", "LabelRSSFeedCustomOwnerName": "Custom owner Name",
"LabelRSSFeedPreventIndexing": "Prevent Indexing", "LabelRSSFeedPreventIndexing": "Prevent Indexing",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Recently Added", "LabelRecentlyAdded": "Recently Added",
"LabelRecentSeries": "Recent Series", "LabelRecentSeries": "Recent Series",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Email de dueño personalizado", "LabelRSSFeedCustomOwnerEmail": "Email de dueño personalizado",
"LabelRSSFeedCustomOwnerName": "Nombre de dueño personalizado", "LabelRSSFeedCustomOwnerName": "Nombre de dueño personalizado",
"LabelRSSFeedPreventIndexing": "Prevenir Indexado", "LabelRSSFeedPreventIndexing": "Prevenir Indexado",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Recently Added", "LabelRecentlyAdded": "Recently Added",
"LabelRecentSeries": "Recent Series", "LabelRecentSeries": "Recent Series",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Courriel du propriétaire personnalisé", "LabelRSSFeedCustomOwnerEmail": "Courriel du propriétaire personnalisé",
"LabelRSSFeedCustomOwnerName": "Nom propriétaire personnalisé", "LabelRSSFeedCustomOwnerName": "Nom propriétaire personnalisé",
"LabelRSSFeedPreventIndexing": "Empêcher lindexation", "LabelRSSFeedPreventIndexing": "Empêcher lindexation",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Recently Added", "LabelRecentlyAdded": "Recently Added",
"LabelRecentSeries": "Recent Series", "LabelRecentSeries": "Recent Series",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Custom owner Email", "LabelRSSFeedCustomOwnerEmail": "Custom owner Email",
"LabelRSSFeedCustomOwnerName": "Custom owner Name", "LabelRSSFeedCustomOwnerName": "Custom owner Name",
"LabelRSSFeedPreventIndexing": "Prevent Indexing", "LabelRSSFeedPreventIndexing": "Prevent Indexing",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Recently Added", "LabelRecentlyAdded": "Recently Added",
"LabelRecentSeries": "Recent Series", "LabelRecentSeries": "Recent Series",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Custom owner Email", "LabelRSSFeedCustomOwnerEmail": "Custom owner Email",
"LabelRSSFeedCustomOwnerName": "Custom owner Name", "LabelRSSFeedCustomOwnerName": "Custom owner Name",
"LabelRSSFeedPreventIndexing": "Prevent Indexing", "LabelRSSFeedPreventIndexing": "Prevent Indexing",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Recently Added", "LabelRecentlyAdded": "Recently Added",
"LabelRecentSeries": "Recent Series", "LabelRecentSeries": "Recent Series",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Custom owner Email", "LabelRSSFeedCustomOwnerEmail": "Custom owner Email",
"LabelRSSFeedCustomOwnerName": "Custom owner Name", "LabelRSSFeedCustomOwnerName": "Custom owner Name",
"LabelRSSFeedPreventIndexing": "Prevent Indexing", "LabelRSSFeedPreventIndexing": "Prevent Indexing",

View file

@ -191,9 +191,7 @@
"LabelReadAgain": "Újraolvasás", "LabelReadAgain": "Újraolvasás",
"LabelRecentlyAdded": "Legutóbb hozzáadva", "LabelRecentlyAdded": "Legutóbb hozzáadva",
"LabelRecentSeries": "Legutóbbi sorozatok", "LabelRecentSeries": "Legutóbbi sorozatok",
"MessageConfirmMarkAsFinished": "Biztosan befejezettnek jelöli ezt az elemet?", "LabelRemoveFromPlaylist": "Remove from Playlist",
"MessageConfirmRemoveBookmark": "Biztosan eltávolítja a könyvjelzőt?",
"MessageDiscardProgress": "Haladás elvetése",
"LabelRSSFeedCustomOwnerEmail": "Egyéni tulajdonos e-mail", "LabelRSSFeedCustomOwnerEmail": "Egyéni tulajdonos e-mail",
"LabelRSSFeedCustomOwnerName": "Egyéni tulajdonos neve", "LabelRSSFeedCustomOwnerName": "Egyéni tulajdonos neve",
"LabelRSSFeedPreventIndexing": "Indexelés megakadályozása", "LabelRSSFeedPreventIndexing": "Indexelés megakadályozása",
@ -246,6 +244,9 @@
"MessageConfirmDeleteLocalEpisode": "\"{0}\" helyi epizód eltávolítása az eszközről? A szerveren lévő fájl nem érintett.", "MessageConfirmDeleteLocalEpisode": "\"{0}\" helyi epizód eltávolítása az eszközről? A szerveren lévő fájl nem érintett.",
"MessageConfirmDeleteLocalFiles": "Ezen elem helyi fájljainak eltávolítása az eszközről? A szerveren lévő fájlok és a haladás nem érintettek.", "MessageConfirmDeleteLocalFiles": "Ezen elem helyi fájljainak eltávolítása az eszközről? A szerveren lévő fájlok és a haladás nem érintettek.",
"MessageConfirmDiscardProgress": "Biztosan alaphelyzetbe akarja állítani a haladást?", "MessageConfirmDiscardProgress": "Biztosan alaphelyzetbe akarja állítani a haladást?",
"MessageConfirmMarkAsFinished": "Biztosan befejezettnek jelöli ezt az elemet?",
"MessageConfirmRemoveBookmark": "Biztosan eltávolítja a könyvjelzőt?",
"MessageDiscardProgress": "Haladás elvetése",
"MessageDownloadCompleteProcessing": "Letöltés kész. Feldolgozás...", "MessageDownloadCompleteProcessing": "Letöltés kész. Feldolgozás...",
"MessageDownloading": "Letöltés...", "MessageDownloading": "Letöltés...",
"MessageDownloadingEpisode": "Epizód letöltése", "MessageDownloadingEpisode": "Epizód letöltése",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Leggi Ancora", "LabelReadAgain": "Leggi Ancora",
"LabelRecentlyAdded": "Aggiunti Recentemente", "LabelRecentlyAdded": "Aggiunti Recentemente",
"LabelRecentSeries": "Serie Recenti", "LabelRecentSeries": "Serie Recenti",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Email del proprietario personalizzato", "LabelRSSFeedCustomOwnerEmail": "Email del proprietario personalizzato",
"LabelRSSFeedCustomOwnerName": "Nome del proprietario personalizzato", "LabelRSSFeedCustomOwnerName": "Nome del proprietario personalizzato",
"LabelRSSFeedPreventIndexing": "Impedisci l'indicizzazione", "LabelRSSFeedPreventIndexing": "Impedisci l'indicizzazione",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Recently Added", "LabelRecentlyAdded": "Recently Added",
"LabelRecentSeries": "Recent Series", "LabelRecentSeries": "Recent Series",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Pasirinktinis savininko el. paštas", "LabelRSSFeedCustomOwnerEmail": "Pasirinktinis savininko el. paštas",
"LabelRSSFeedCustomOwnerName": "Pasirinktinis savininko vardas", "LabelRSSFeedCustomOwnerName": "Pasirinktinis savininko vardas",
"LabelRSSFeedPreventIndexing": "Neleisti indeksuoti", "LabelRSSFeedPreventIndexing": "Neleisti indeksuoti",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Recently Added", "LabelRecentlyAdded": "Recently Added",
"LabelRecentSeries": "Recent Series", "LabelRecentSeries": "Recent Series",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Aangepast e-mailadres eigenaar", "LabelRSSFeedCustomOwnerEmail": "Aangepast e-mailadres eigenaar",
"LabelRSSFeedCustomOwnerName": "Aangepaste naam eigenaar", "LabelRSSFeedCustomOwnerName": "Aangepaste naam eigenaar",
"LabelRSSFeedPreventIndexing": "Voorkom indexering", "LabelRSSFeedPreventIndexing": "Voorkom indexering",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Recently Added", "LabelRecentlyAdded": "Recently Added",
"LabelRecentSeries": "Recent Series", "LabelRecentSeries": "Recent Series",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Tilpasset eier Epost", "LabelRSSFeedCustomOwnerEmail": "Tilpasset eier Epost",
"LabelRSSFeedCustomOwnerName": "Tilpasset eier Navn", "LabelRSSFeedCustomOwnerName": "Tilpasset eier Navn",
"LabelRSSFeedPreventIndexing": "Forhindre indeksering", "LabelRSSFeedPreventIndexing": "Forhindre indeksering",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Czytaj ponownie", "LabelReadAgain": "Czytaj ponownie",
"LabelRecentlyAdded": "Ostatnio dodane", "LabelRecentlyAdded": "Ostatnio dodane",
"LabelRecentSeries": "Najnowsze serie", "LabelRecentSeries": "Najnowsze serie",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Custom owner Email", "LabelRSSFeedCustomOwnerEmail": "Custom owner Email",
"LabelRSSFeedCustomOwnerName": "Custom owner Name", "LabelRSSFeedCustomOwnerName": "Custom owner Name",
"LabelRSSFeedPreventIndexing": "Zapobiegaj indeksowaniu", "LabelRSSFeedPreventIndexing": "Zapobiegaj indeksowaniu",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Ler Novamente", "LabelReadAgain": "Ler Novamente",
"LabelRecentlyAdded": "Novidades", "LabelRecentlyAdded": "Novidades",
"LabelRecentSeries": "Séries Recentes", "LabelRecentSeries": "Séries Recentes",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Email do dono personalizado", "LabelRSSFeedCustomOwnerEmail": "Email do dono personalizado",
"LabelRSSFeedCustomOwnerName": "Nome do dono personalizado", "LabelRSSFeedCustomOwnerName": "Nome do dono personalizado",
"LabelRSSFeedPreventIndexing": "Impedir Indexação", "LabelRSSFeedPreventIndexing": "Impedir Indexação",
@ -290,4 +291,4 @@
"ToastPodcastCreateSuccess": "Podcast criado", "ToastPodcastCreateSuccess": "Podcast criado",
"ToastRSSFeedCloseFailed": "Falha ao fechar feed RSS", "ToastRSSFeedCloseFailed": "Falha ao fechar feed RSS",
"ToastRSSFeedCloseSuccess": "Feed RSS fechado" "ToastRSSFeedCloseSuccess": "Feed RSS fechado"
} }

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Недавно добавленные", "LabelRecentlyAdded": "Недавно добавленные",
"LabelRecentSeries": "Недавние серии", "LabelRecentSeries": "Недавние серии",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Пользовательский Email владельца", "LabelRSSFeedCustomOwnerEmail": "Пользовательский Email владельца",
"LabelRSSFeedCustomOwnerName": "Пользовательское Имя владельца", "LabelRSSFeedCustomOwnerName": "Пользовательское Имя владельца",
"LabelRSSFeedPreventIndexing": "Запретить индексирование", "LabelRSSFeedPreventIndexing": "Запретить индексирование",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "Read Again", "LabelReadAgain": "Read Again",
"LabelRecentlyAdded": "Recently Added", "LabelRecentlyAdded": "Recently Added",
"LabelRecentSeries": "Recent Series", "LabelRecentSeries": "Recent Series",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "Anpassad ägarens e-post", "LabelRSSFeedCustomOwnerEmail": "Anpassad ägarens e-post",
"LabelRSSFeedCustomOwnerName": "Anpassat ägarnamn", "LabelRSSFeedCustomOwnerName": "Anpassat ägarnamn",
"LabelRSSFeedPreventIndexing": "Förhindra indexering", "LabelRSSFeedPreventIndexing": "Förhindra indexering",

View file

@ -191,6 +191,7 @@
"LabelReadAgain": "再次阅读", "LabelReadAgain": "再次阅读",
"LabelRecentlyAdded": "最近添加", "LabelRecentlyAdded": "最近添加",
"LabelRecentSeries": "最近添加系列", "LabelRecentSeries": "最近添加系列",
"LabelRemoveFromPlaylist": "Remove from Playlist",
"LabelRSSFeedCustomOwnerEmail": "自定义所有者电子邮件", "LabelRSSFeedCustomOwnerEmail": "自定义所有者电子邮件",
"LabelRSSFeedCustomOwnerName": "自定义所有者名称", "LabelRSSFeedCustomOwnerName": "自定义所有者名称",
"LabelRSSFeedPreventIndexing": "防止索引", "LabelRSSFeedPreventIndexing": "防止索引",