Add:Book library sort by published year, Fix:Check and set sort/filter when changing library to different media type

This commit is contained in:
advplyr 2022-08-25 17:50:55 -05:00
parent bba388aefa
commit 79f09b334c
3 changed files with 37 additions and 1 deletions

View file

@ -39,6 +39,10 @@ export default {
text: 'Author (Last, First)', text: 'Author (Last, First)',
value: 'media.metadata.authorNameLF' value: 'media.metadata.authorNameLF'
}, },
{
text: 'Published Year',
value: 'media.metadata.publishedYear'
},
{ {
text: 'Added At', text: 'Added At',
value: 'addedAt' value: 'addedAt'

View file

@ -22,7 +22,7 @@ export const getters = {
} }
export const actions = { export const actions = {
fetch({ state, commit, rootState }, libraryId) { fetch({ state, commit, dispatch, rootState }, libraryId) {
if (!rootState.user || !rootState.user.user) { if (!rootState.user || !rootState.user.user) {
console.error('libraries/fetch - User not set') console.error('libraries/fetch - User not set')
return false return false
@ -35,6 +35,8 @@ export const actions = {
var filterData = data.filterdata var filterData = data.filterdata
var issues = data.issues || 0 var issues = data.issues || 0
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)

View file

@ -48,6 +48,36 @@ export const getters = {
} }
export const actions = { export const actions = {
// When changing libraries make sure sort and filter is still valid
checkUpdateLibrarySortFilter({ state, dispatch, commit }, mediaType) {
var settingsUpdate = {}
if (mediaType == 'podcast') {
if (state.settings.mobileOrderBy == 'media.metadata.authorName' || state.settings.mobileOrderBy == 'media.metadata.authorNameLF') {
settingsUpdate.mobileOrderBy = 'media.metadata.author'
}
if (state.settings.mobileOrderBy == 'media.duration') {
settingsUpdate.mobileOrderBy = 'media.numTracks'
}
if (state.settings.mobileOrderBy == 'media.metadata.publishedYear') {
settingsUpdate.mobileOrderBy = 'media.metadata.title'
}
var invalidFilters = ['series', 'authors', 'narrators', 'languages', 'progress', 'issues']
var filterByFirstPart = (state.settings.mobileFilterBy || '').split('.').shift()
if (invalidFilters.includes(filterByFirstPart)) {
settingsUpdate.filterBy = 'all'
}
} else {
if (state.settings.mobileOrderBy == 'media.metadata.author') {
settingsUpdate.mobileOrderBy = 'media.metadata.authorName'
}
if (state.settings.mobileOrderBy == 'media.numTracks') {
settingsUpdate.mobileOrderBy = 'media.duration'
}
}
if (Object.keys(settingsUpdate).length) {
dispatch('updateUserSettings', settingsUpdate)
}
},
async updateUserSettings({ state, commit }, payload) { async updateUserSettings({ state, commit }, payload) {
if (state.serverConnectionConfig) { if (state.serverConnectionConfig) {
var updatePayload = { var updatePayload = {