Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
- Introduce provider abstraction layer (IMediaProvider, KomgaProvider, StripstreamProvider) - Add Stripstream Librarian as second media provider with full feature parity - Migrate all pages and components from direct Komga services to provider factory - Remove dead service code (BaseApiService, HomeService, LibraryService, SearchService, TestService) - Fix library/series page-based pagination for both providers (Komga 0-indexed, Stripstream 1-indexed) - Fix unread filter and search on library page for both providers - Fix read progress display for Stripstream (reading_status mapping) - Fix series read status (books_read_count) for Stripstream - Add global search with series results for Stripstream (series_hits from Meilisearch) - Fix thumbnail proxy to return 404 gracefully instead of JSON on upstream error - Replace duration-based cache debug detection with x-nextjs-cache header Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
"use client";
|
|
|
|
import { PaginatedBookGrid } from "@/components/series/PaginatedBookGrid";
|
|
import { SeriesHeader } from "@/components/series/SeriesHeader";
|
|
import { Container } from "@/components/ui/container";
|
|
import { useRefresh } from "@/contexts/RefreshContext";
|
|
import type { NormalizedBooksPage, NormalizedSeries } from "@/lib/providers/types";
|
|
import type { UserPreferences } from "@/types/preferences";
|
|
|
|
interface SeriesContentProps {
|
|
series: NormalizedSeries;
|
|
books: NormalizedBooksPage;
|
|
currentPage: number;
|
|
preferences: UserPreferences;
|
|
unreadOnly: boolean;
|
|
pageSize: number;
|
|
initialIsFavorite: boolean;
|
|
}
|
|
|
|
export function SeriesContent({
|
|
series,
|
|
books,
|
|
currentPage,
|
|
preferences,
|
|
unreadOnly,
|
|
initialIsFavorite,
|
|
}: SeriesContentProps) {
|
|
const { refreshSeries } = useRefresh();
|
|
|
|
return (
|
|
<>
|
|
<SeriesHeader
|
|
series={series}
|
|
refreshSeries={refreshSeries || (async () => ({ success: false }))}
|
|
initialIsFavorite={initialIsFavorite}
|
|
/>
|
|
<Container>
|
|
<PaginatedBookGrid
|
|
books={books.items}
|
|
currentPage={currentPage}
|
|
totalPages={books.totalPages ?? 1}
|
|
totalElements={books.totalElements ?? books.items.length}
|
|
defaultShowOnlyUnread={preferences.showOnlyUnread}
|
|
showOnlyUnread={unreadOnly}
|
|
/>
|
|
</Container>
|
|
</>
|
|
);
|
|
}
|