Lazy bookshelf, api routes for categories and filter data

This commit is contained in:
advplyr 2021-11-30 20:02:40 -06:00
parent 4587916c8e
commit 5c92aef048
26 changed files with 1354 additions and 332 deletions

View file

@ -155,6 +155,7 @@ export const getters = {
return [...new Set(_genres)].sort((a, b) => a.toLowerCase() < b.toLowerCase() ? -1 : 1)
},
getBookCoverSrc: (state, getters, rootState, rootGetters) => (bookItem, placeholder = '/book_placeholder.jpg') => {
if (!bookItem) return placeholder
var book = bookItem.book
if (!book || !book.cover || book.cover === placeholder) return placeholder
var cover = book.cover

View file

@ -33,6 +33,5 @@ export const mutations = {
},
setShowBookshelfTextureModal(state, val) {
state.showBookshelfTextureModal = val
console.log('shopw', val)
}
}

View file

@ -4,7 +4,8 @@ export const state = () => ({
listeners: [],
currentLibraryId: 'main',
folders: [],
folderLastUpdate: 0
folderLastUpdate: 0,
filterData: null
})
export const getters = {
@ -53,16 +54,19 @@ export const actions = {
return false
}
var library = state.libraries.find(lib => lib.id === libraryId)
if (library) {
commit('setCurrentLibrary', libraryId)
return library
}
// var library = state.libraries.find(lib => lib.id === libraryId)
// if (library) {
// commit('setCurrentLibrary', libraryId)
// return library
// }
return this.$axios
.$get(`/api/libraries/${libraryId}`)
.$get(`/api/libraries/${libraryId}?include=filterdata`)
.then((data) => {
commit('addUpdate', data)
var library = data.library
var filterData = data.filterdata
commit('addUpdate', library)
commit('setLibraryFilterData', filterData)
commit('setCurrentLibrary', libraryId)
return data
})
@ -97,7 +101,22 @@ export const actions = {
})
return true
},
loadLibraryFilterData({ state, commit, rootState }) {
if (!rootState.user || !rootState.user.user) {
console.error('libraries/loadLibraryFilterData - User not set')
return false
}
this.$axios
.$get(`/api/libraries/${state.currentLibraryId}/filters`)
.then((data) => {
commit('setLibraryFilterData', data)
})
.catch((error) => {
console.error('Failed', error)
commit('setLibraryFilterData', null)
})
}
}
export const mutations = {
@ -145,5 +164,8 @@ export const mutations = {
},
removeListener(state, listenerId) {
state.listeners = state.listeners.filter(l => l.id !== listenerId)
},
setLibraryFilterData(state, filterData) {
state.filterData = filterData
}
}

View file

@ -25,7 +25,7 @@ export const getters = {
return state.user && state.user.audiobooks ? state.user.audiobooks[audiobookId] || null : null
},
getUserSetting: (state) => (key) => {
return state.settings ? state.settings[key] || null : null
return state.settings ? state.settings[key] : null
},
getUserCanUpdate: (state) => {
return state.user && state.user.permissions ? !!state.user.permissions.update : false