fix library preview series counts

This commit is contained in:
ShukeBta
2026-07-02 01:16:37 +08:00
parent 5ecb5e2144
commit 5daee11c77
4 changed files with 83 additions and 5 deletions
+8 -1
View File
@@ -7,7 +7,7 @@ import {
LibrariesEmptyState,
LibrariesHeader,
} from './LibrariesPageSections'
import { latestLibraryCards, type LibraryPreview } from './librariesPageModel'
import { isSeriesLibraryType, latestLibraryCards, type LibraryPreview } from './librariesPageModel'
export function LibrariesPage() {
const [previews, setPreviews] = useState<LibraryPreview[]>([])
@@ -38,6 +38,13 @@ export function LibrariesPage() {
const libs = await libraryAPI.list()
const rows = await Promise.all(libs.map(async (library) => {
try {
if (isSeriesLibraryType(library.type)) {
const [seriesPage, mediaPage] = await Promise.all([
libraryAPI.listSeries(library.id, 1, 10),
libraryAPI.listMedia(library.id, 1, 1, { groupVersions: false }),
])
return { library, items: [], total: mediaPage.total, cards: seriesPage.items ?? [] } satisfies LibraryPreview
}
const page = await libraryAPI.listMedia(library.id, 1, 160, { groupVersions: false })
const cards = latestLibraryCards(page.items)
return { library, items: page.items, total: page.total, cards } satisfies LibraryPreview
+4
View File
@@ -8,6 +8,10 @@ export type LibraryPreview = {
cards: SeriesCard[]
}
export function isSeriesLibraryType(type?: string) {
return type === 'tv' || type === 'anime' || type === 'variety'
}
export function latestLibraryCards(items: Media[]): SeriesCard[] {
return groupSeries(items)
.sort((a, b) => mediaTime(b.rep) - mediaTime(a.rep) || artworkScore(b.rep) - artworkScore(a.rep))