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>
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import { LibraryHeader } from "@/components/library/LibraryHeader";
|
|
import { PaginatedSeriesGrid } from "@/components/library/PaginatedSeriesGrid";
|
|
import { Container } from "@/components/ui/container";
|
|
import type { NormalizedLibrary, NormalizedSeriesPage } from "@/lib/providers/types";
|
|
import type { UserPreferences } from "@/types/preferences";
|
|
|
|
interface LibraryContentProps {
|
|
library: NormalizedLibrary;
|
|
series: NormalizedSeriesPage;
|
|
currentPage: number;
|
|
preferences: UserPreferences;
|
|
unreadOnly: boolean;
|
|
search?: string;
|
|
pageSize: number;
|
|
}
|
|
|
|
export function LibraryContent({
|
|
library,
|
|
series,
|
|
currentPage,
|
|
preferences,
|
|
unreadOnly,
|
|
pageSize,
|
|
}: LibraryContentProps) {
|
|
return (
|
|
<>
|
|
<LibraryHeader
|
|
library={library}
|
|
seriesCount={series.totalElements ?? series.items.length}
|
|
series={series.items}
|
|
/>
|
|
<Container>
|
|
<PaginatedSeriesGrid
|
|
series={series.items}
|
|
currentPage={currentPage}
|
|
totalPages={series.totalPages ?? 1}
|
|
totalElements={series.totalElements ?? series.items.length}
|
|
defaultShowOnlyUnread={preferences.showOnlyUnread}
|
|
showOnlyUnread={unreadOnly}
|
|
pageSize={pageSize}
|
|
initialCompact={preferences.displayMode.compact}
|
|
initialViewMode={preferences.displayMode.viewMode || "grid"}
|
|
/>
|
|
</Container>
|
|
</>
|
|
);
|
|
}
|