Update:Fetch library API to return numUserPlaylists, only display playlists in siderail if user has playlists

This commit is contained in:
advplyr 2022-11-27 14:34:27 -06:00
parent 0fcf978ffe
commit 083f8faa46
3 changed files with 16 additions and 5 deletions

View File

@ -186,7 +186,7 @@ export default {
return this.$store.state.streamLibraryItem return this.$store.state.streamLibraryItem
}, },
showPlaylists() { showPlaylists() {
return true return this.$store.state.libraries.numUserPlaylists > 0
} }
}, },
methods: { methods: {

View File

@ -9,6 +9,7 @@ export const state = () => ({
issues: 0, issues: 0,
folderLastUpdate: 0, folderLastUpdate: 0,
filterData: null, filterData: null,
numUserPlaylists: 0,
seriesSortBy: 'name', seriesSortBy: 'name',
seriesSortDesc: false, seriesSortDesc: false,
seriesFilterBy: 'all', seriesFilterBy: 'all',
@ -111,15 +112,17 @@ export const actions = {
return this.$axios return this.$axios
.$get(`/api/libraries/${libraryId}?include=filterdata`) .$get(`/api/libraries/${libraryId}?include=filterdata`)
.then((data) => { .then((data) => {
var library = data.library const library = data.library
var filterData = data.filterdata const filterData = data.filterdata
var issues = data.issues || 0 const issues = data.issues || 0
const numUserPlaylists = data.numUserPlaylists
dispatch('user/checkUpdateLibrarySortFilter', library.mediaType, { root: true }) dispatch('user/checkUpdateLibrarySortFilter', library.mediaType, { root: true })
commit('addUpdate', library) commit('addUpdate', library)
commit('setLibraryIssues', issues) commit('setLibraryIssues', issues)
commit('setLibraryFilterData', filterData) commit('setLibraryFilterData', filterData)
commit('setNumUserPlaylists', numUserPlaylists)
commit('setCurrentLibrary', libraryId) commit('setCurrentLibrary', libraryId)
if (libraryChanging) { if (libraryChanging) {
commit('setCollections', []) commit('setCollections', [])
@ -228,6 +231,9 @@ export const mutations = {
setLibraryFilterData(state, filterData) { setLibraryFilterData(state, filterData) {
state.filterData = filterData state.filterData = filterData
}, },
setNumUserPlaylists(state, numUserPlaylists) {
state.numUserPlaylists = numUserPlaylists
},
updateFilterDataWithItem(state, libraryItem) { updateFilterDataWithItem(state, libraryItem) {
if (!libraryItem || !state.filterData) return if (!libraryItem || !state.filterData) return
if (state.currentLibraryId !== libraryItem.libraryId) return if (state.currentLibraryId !== libraryItem.libraryId) return
@ -332,6 +338,7 @@ export const mutations = {
}, },
setUserPlaylists(state, playlists) { setUserPlaylists(state, playlists) {
state.userPlaylists = playlists state.userPlaylists = playlists
state.numUserPlaylists = playlists.length
}, },
addUpdateUserPlaylist(state, playlist) { addUpdateUserPlaylist(state, playlist) {
const index = state.userPlaylists.findIndex(p => p.id === playlist.id) const index = state.userPlaylists.findIndex(p => p.id === playlist.id)
@ -339,9 +346,11 @@ export const mutations = {
state.userPlaylists.splice(index, 1, playlist) state.userPlaylists.splice(index, 1, playlist)
} else { } else {
state.userPlaylists.push(playlist) state.userPlaylists.push(playlist)
state.numUserPlaylists++
} }
}, },
removeUserPlaylist(state, playlist) { removeUserPlaylist(state, playlist) {
state.userPlaylists = state.userPlaylists.filter(p => p.id !== playlist.id) state.userPlaylists = state.userPlaylists.filter(p => p.id !== playlist.id)
state.numUserPlaylists = state.userPlaylists.length
} }
} }

View File

@ -62,10 +62,12 @@ class LibraryController {
} }
async findOne(req, res) { async findOne(req, res) {
if (req.query.include && req.query.include === 'filterdata') { const includeArray = (req.query.include || '').split(',')
if (includeArray.includes('filterdata')) {
return res.json({ return res.json({
filterdata: libraryHelpers.getDistinctFilterDataNew(req.libraryItems), filterdata: libraryHelpers.getDistinctFilterDataNew(req.libraryItems),
issues: req.libraryItems.filter(li => li.hasIssues).length, issues: req.libraryItems.filter(li => li.hasIssues).length,
numUserPlaylists: this.db.playlists.filter(p => p.userId === req.user.id && p.libraryId === req.library.id).length,
library: req.library library: req.library
}) })
} }