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
},
showPlaylists() {
return true
return this.$store.state.libraries.numUserPlaylists > 0
}
},
methods: {

View File

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