diff --git a/apps/web/src/pages/HomePage.tsx b/apps/web/src/pages/HomePage.tsx index ba60c05..23af4e9 100644 --- a/apps/web/src/pages/HomePage.tsx +++ b/apps/web/src/pages/HomePage.tsx @@ -3,7 +3,7 @@ import { BookOpen, LibraryBig, ScanLine } from "lucide-react"; import { api } from "../api/client"; import type { DashboardData } from "../api/types"; import { bookDisplayTitle, bookVolumeLabel } from "../book/metadata"; -import { EmptyState, LoadingState, Panel } from "../components/ui"; +import { EmptyState, LoadingState, Meter, Panel } from "../components/ui"; import { navigate } from "../router"; export function HomePage() { @@ -26,10 +26,14 @@ export function HomePage() { if (!state) return ; - const renderHomeBook = (item: DashboardData["books"][number], className = "home-book-card") => { + const renderHomeBook = ( + item: DashboardData["books"][number], + className = "home-book-card", + options: { href?: string; progressPercent?: number } = {} + ) => { const volumeLabel = bookVolumeLabel(item); return ( - navigate(`/book/${item.id}`)}> + navigate(options.href ?? `/book/${item.id}`)}> {item.coverPath ? : } @@ -37,6 +41,7 @@ export function HomePage() { {volumeLabel && {volumeLabel}} {bookDisplayTitle(item)} {item.author ?? "Auteur inconnu"} + {options.progressPercent !== undefined && } ); @@ -63,7 +68,12 @@ export function HomePage() { {state.continueReading.length ? ( - {state.continueReading.map((item) => renderHomeBook(item.book, "home-book-card continue-tile"))} + {state.continueReading.map((item) => + renderHomeBook(item.book, "home-book-card continue-tile", { + href: `/reader/${item.book.id}`, + progressPercent: item.progress.percent + }) + )} ) : ( diff --git a/apps/web/src/pages/HomePageProgressScroll.test.ts b/apps/web/src/pages/HomePageProgressScroll.test.ts index 572dcae..c3a1f8c 100644 --- a/apps/web/src/pages/HomePageProgressScroll.test.ts +++ b/apps/web/src/pages/HomePageProgressScroll.test.ts @@ -21,6 +21,9 @@ describe("home progress list layout", () => { expect(source).toContain("renderHomeBook"); expect(source).toContain("home-book-card"); + expect(source).toContain("progressPercent"); + expect(source).toContain(""); + expect(source).toContain("progressPercent: item.progress.percent"); expect(source).not.toContain("