mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-02-10 00:18:06 +01:00
Fixes bug when titles are in multiple series being collapsed
This commit is contained in:
parent
a3dc79121e
commit
d64932dad7
@ -283,32 +283,31 @@ module.exports = {
|
|||||||
collapseBookSeries(libraryItems, series) {
|
collapseBookSeries(libraryItems, series) {
|
||||||
var seriesObjects = this.getSeriesFromBooks(libraryItems, series, null, null, true)
|
var seriesObjects = this.getSeriesFromBooks(libraryItems, series, null, null, true)
|
||||||
var seriesToUse = {}
|
var seriesToUse = {}
|
||||||
var libraryItemIdsToHide = []
|
var collapsedLibraryItems = []
|
||||||
seriesObjects.forEach((series) => {
|
|
||||||
series.firstBook = series.books.find(b => !seriesToUse[b.id]) // Find first book not already used
|
|
||||||
if (series.firstBook) {
|
|
||||||
seriesToUse[series.firstBook.id] = series
|
|
||||||
libraryItemIdsToHide = libraryItemIdsToHide.concat(series.books.filter(b => !seriesToUse[b.id]).map(b => b.id))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
return libraryItems.map((li) => {
|
libraryItems.forEach((li) => {
|
||||||
if (li.mediaType != 'book') return
|
if (li.mediaType != 'book') return
|
||||||
var libraryItemJson = li.toJSONMinified()
|
|
||||||
if (libraryItemIdsToHide.includes(li.id)) {
|
// Handle when this is the first book in a series
|
||||||
return null
|
seriesObjects.filter(s => s.books[0].id == li.id).forEach(series => {
|
||||||
}
|
let libraryItemJson = li.toJSONMinified()
|
||||||
if (seriesToUse[li.id]) {
|
|
||||||
libraryItemJson.collapsedSeries = {
|
libraryItemJson.collapsedSeries = {
|
||||||
id: seriesToUse[li.id].id,
|
id: series.id,
|
||||||
name: seriesToUse[li.id].name,
|
name: series.name,
|
||||||
nameIgnorePrefix: seriesToUse[li.id].nameIgnorePrefix,
|
nameIgnorePrefix: series.nameIgnorePrefix,
|
||||||
libraryItemIds: seriesToUse[li.id].books.map(b => b.id),
|
libraryItemIds: series.books.map(b => b.id),
|
||||||
numBooks: seriesToUse[li.id].books.length
|
numBooks: series.books.length
|
||||||
}
|
}
|
||||||
}
|
collapsedLibraryItems.push(libraryItemJson);
|
||||||
return libraryItemJson
|
});
|
||||||
}).filter(li => li)
|
|
||||||
|
// Ignore books contained in series
|
||||||
|
if (li.media.metadata.series.length) return
|
||||||
|
|
||||||
|
collapsedLibraryItems.push(li.toJSONMinified())
|
||||||
|
});
|
||||||
|
|
||||||
|
return collapsedLibraryItems
|
||||||
},
|
},
|
||||||
|
|
||||||
buildPersonalizedShelves(user, libraryItems, mediaType, allSeries, allAuthors, maxEntitiesPerShelf = 10) {
|
buildPersonalizedShelves(user, libraryItems, mediaType, allSeries, allAuthors, maxEntitiesPerShelf = 10) {
|
||||||
|
Loading…
Reference in New Issue
Block a user