import { fetchLibraries, fetchSeries, getBookCoverUrl, LibraryDto, SeriesDto, SeriesPageDto } from "../../../../lib/api"; import { OffsetPagination } from "../../../components/ui"; import Image from "next/image"; import Link from "next/link"; import { notFound } from "next/navigation"; import { LibrarySubPageHeader } from "../../../components/LibrarySubPageHeader"; export const dynamic = "force-dynamic"; export default async function LibrarySeriesPage({ params, searchParams }: { params: Promise<{ id: string }>; searchParams: Promise<{ [key: string]: string | string[] | undefined }>; }) { const { id } = await params; const searchParamsAwaited = await searchParams; const page = typeof searchParamsAwaited.page === "string" ? parseInt(searchParamsAwaited.page) : 1; const limit = typeof searchParamsAwaited.limit === "string" ? parseInt(searchParamsAwaited.limit) : 20; const [library, seriesPage] = await Promise.all([ fetchLibraries().then(libs => libs.find(l => l.id === id)), fetchSeries(id, page, limit).catch(() => ({ items: [] as SeriesDto[], total: 0, page: 1, limit }) as SeriesPageDto) ]); if (!library) { notFound(); } const series = seriesPage.items; const totalPages = Math.ceil(seriesPage.total / limit); return (
{s.book_count} book{s.book_count !== 1 ? 's' : ''}
No series found in this library