fix: restore Ctrl+A functionality and expand to categorized bookshelf (Home/Search)

This commit is contained in:
Tiberiu Ichim 2026-02-20 18:52:20 +02:00
parent d3ac9adcd5
commit 2f8a3c9fc7
2 changed files with 28 additions and 3 deletions

View file

@ -134,8 +134,8 @@ export default {
return this.$route.name === 'item-id' return this.$route.name === 'item-id'
}, },
isBookshelfPage() { isBookshelfPage() {
const bookshelfRoutes = ['library-library-bookshelf', 'library-library-series', 'library-library-collections', 'library-library-playlists', 'library-library-authors', 'library-library'] if (!this.$route.name) return false
return bookshelfRoutes.includes(this.$route.name) return this.$route.name.startsWith('library-library')
}, },
selectedMediaItemsArePlayable() { selectedMediaItemsArePlayable() {
return !this.selectedMediaItems.some((i) => !i.hasTracks) return !this.selectedMediaItems.some((i) => !i.hasTracks)
@ -543,7 +543,7 @@ export default {
const shift = e.shiftKey const shift = e.shiftKey
const alt = e.altKey const alt = e.altKey
if (ctrlOrMeta && e.key === 'a') { if (ctrlOrMeta && e.key.toLowerCase() === 'a') {
if (this.isBookshelfPage) { if (this.isBookshelfPage) {
e.preventDefault() e.preventDefault()
this.$eventBus.$emit('bookshelf_select_all') this.$eventBus.$emit('bookshelf_select_all')

View file

@ -180,6 +180,29 @@ export default {
this.$eventBus.$emit('item-selected', entity) this.$eventBus.$emit('item-selected', entity)
}) })
}, },
selectAll() {
const itemsToSelect = []
this.supportedShelves.forEach((shelf) => {
if (shelf.type === 'book' || shelf.type === 'podcast' || shelf.type === 'episode') {
shelf.entities.forEach((entity) => {
const mediaItem = {
id: entity.id,
libraryId: entity.libraryId,
mediaType: entity.mediaType,
hasTracks: entity.mediaType === 'podcast' || (entity.media && (entity.media.audioFile || entity.media.numTracks || (entity.media.tracks && entity.media.tracks.length)))
}
itemsToSelect.push(mediaItem)
})
}
})
if (itemsToSelect.length) {
this.$store.commit('globals/addBatchMediaItemsSelected', itemsToSelect)
this.$nextTick(() => {
this.$eventBus.$emit('item-selected')
})
}
},
async init() { async init() {
this.wrapperClientWidth = this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0 this.wrapperClientWidth = this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0
@ -506,6 +529,7 @@ export default {
} else { } else {
console.error('Error socket not initialized') console.error('Error socket not initialized')
} }
this.$eventBus.$on('bookshelf_select_all', this.selectAll)
}, },
removeListeners() { removeListeners() {
if (this.$root.socket) { if (this.$root.socket) {
@ -523,6 +547,7 @@ export default {
} else { } else {
console.error('Error socket not initialized') console.error('Error socket not initialized')
} }
this.$eventBus.$off('bookshelf_select_all', this.selectAll)
} }
}, },
mounted() { mounted() {