feat: enhance ClientSeriesPage to utilize initial series and books props for improved data handling and loading state management

This commit is contained in:
Julien Froidefond
2025-12-07 10:03:44 +01:00
parent 39e3328123
commit 239ea19ac3
3 changed files with 27 additions and 38 deletions

View File

@@ -1,4 +1,5 @@
import { PreferencesService } from "@/lib/services/preferences.service";
import { SeriesService } from "@/lib/services/series.service";
import { ClientSeriesPage } from "./ClientSeriesPage";
import type { UserPreferences } from "@/types/preferences";
@@ -7,6 +8,8 @@ interface PageProps {
searchParams: Promise<{ page?: string; unread?: string; size?: string }>;
}
const DEFAULT_PAGE_SIZE = 20;
export default async function SeriesPage({ params, searchParams }: PageProps) {
const seriesId = (await params).seriesId;
const page = (await searchParams).page;
@@ -18,6 +21,15 @@ export default async function SeriesPage({ params, searchParams }: PageProps) {
// Utiliser le paramètre d'URL s'il existe, sinon utiliser la préférence utilisateur
const unreadOnly = unread !== undefined ? unread === "true" : preferences.showOnlyUnread;
const effectivePageSize = size
? parseInt(size)
: preferences.displayMode?.itemsPerPage || DEFAULT_PAGE_SIZE;
// Fetch côté serveur
const [books, series] = await Promise.all([
SeriesService.getSeriesBooks(seriesId, currentPage - 1, effectivePageSize, unreadOnly),
SeriesService.getSeries(seriesId),
]);
return (
<ClientSeriesPage
@@ -25,7 +37,9 @@ export default async function SeriesPage({ params, searchParams }: PageProps) {
currentPage={currentPage}
preferences={preferences}
unreadOnly={unreadOnly}
pageSize={size ? parseInt(size) : undefined}
pageSize={effectivePageSize}
initialSeries={series}
initialBooks={books}
/>
);
}