From 083f8faa469f284fc70353914ec176f83d91b922 Mon Sep 17 00:00:00 2001 From: advplyr Date: Sun, 27 Nov 2022 14:34:27 -0600 Subject: [PATCH] Update:Fetch library API to return numUserPlaylists, only display playlists in siderail if user has playlists --- client/components/app/SideRail.vue | 2 +- client/store/libraries.js | 15 ++++++++++++--- server/controllers/LibraryController.js | 4 +++- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/client/components/app/SideRail.vue b/client/components/app/SideRail.vue index dd10623a..870acec9 100644 --- a/client/components/app/SideRail.vue +++ b/client/components/app/SideRail.vue @@ -186,7 +186,7 @@ export default { return this.$store.state.streamLibraryItem }, showPlaylists() { - return true + return this.$store.state.libraries.numUserPlaylists > 0 } }, methods: { diff --git a/client/store/libraries.js b/client/store/libraries.js index f884ed59..eca592f8 100644 --- a/client/store/libraries.js +++ b/client/store/libraries.js @@ -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 } } \ No newline at end of file diff --git a/server/controllers/LibraryController.js b/server/controllers/LibraryController.js index aec012d7..494f767d 100644 --- a/server/controllers/LibraryController.js +++ b/server/controllers/LibraryController.js @@ -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 }) }