diff --git a/apps/web/src/pages/ReaderPage.tsx b/apps/web/src/pages/ReaderPage.tsx index 93e0b51..f4b46e3 100644 --- a/apps/web/src/pages/ReaderPage.tsx +++ b/apps/web/src/pages/ReaderPage.tsx @@ -89,6 +89,7 @@ export function ReaderPage({ bookId }: { bookId: number }) { useEffect(() => { setReaderControls(idleControls); + setPage(1); setZoom(READER_ZOOM_DEFAULT); setMode("horizontal"); }, [bookId]); diff --git a/apps/web/src/pages/ReaderPageVerticalRestore.test.ts b/apps/web/src/pages/ReaderPageVerticalRestore.test.ts new file mode 100644 index 0000000..39bb1ea --- /dev/null +++ b/apps/web/src/pages/ReaderPageVerticalRestore.test.ts @@ -0,0 +1,11 @@ +import { readFileSync } from "node:fs"; +import { describe, expect, it } from "vitest"; + +describe("ReaderPage vertical restore", () => { + it("resets the reader page when opening another book so an invalid progression starts at the top", () => { + const source = readFileSync(new URL("./ReaderPage.tsx", import.meta.url), "utf8"); + const bookResetEffect = source.slice(source.indexOf("useEffect(() => {\n setReaderControls"), source.indexOf(" useEffect(() => {\n if (book?.format", source.indexOf("useEffect(() => {\n setReaderControls"))); + + expect(bookResetEffect).toContain("setPage(1)"); + }); +});