diff --git a/src/components/reader/pager/HorizontalPager.tsx b/src/components/reader/pager/HorizontalPager.tsx index 533820b0..da494d59 100644 --- a/src/components/reader/pager/HorizontalPager.tsx +++ b/src/components/reader/pager/HorizontalPager.tsx @@ -87,8 +87,9 @@ export default function HorizontalPager(props: IReaderProps) { }; useEffect(() => { + // scroll last read page into view after first mount pagesRef.current[curPage]?.scrollIntoView({ inline: 'center' }); - }, [settings.readerType]); + }, [pagesRef.current.length]); useEffect(() => { selfRef.current?.addEventListener('mousedown', dragControl); diff --git a/src/components/reader/pager/VerticalPager.tsx b/src/components/reader/pager/VerticalPager.tsx index 77d6f0fb..5a95e897 100644 --- a/src/components/reader/pager/VerticalPager.tsx +++ b/src/components/reader/pager/VerticalPager.tsx @@ -11,7 +11,7 @@ import Page from '../Page'; export default function VerticalReader(props: IReaderProps) { const { - pages, settings, setCurPage, curPage, chapter, nextChapter, prevChapter, + pages, settings, setCurPage, curPage, nextChapter, prevChapter, } = props; const selfRef = useRef(null); @@ -88,14 +88,8 @@ export default function VerticalReader(props: IReaderProps) { }, [selfRef, curPage]); useEffect(() => { - // scroll last read page into view - let initialPage = (chapter as IChapter).lastPageRead; - if (initialPage > pages.length - 1) { - initialPage = pages.length - 1; - } - if (initialPage > -1) { - pagesRef.current[initialPage].scrollIntoView(); - } + // scroll last read page into view after first mount + pagesRef.current[curPage].scrollIntoView(); }, [pagesRef.current.length]); return ( diff --git a/src/screens/Reader.tsx b/src/screens/Reader.tsx index ed77e457..7d41782a 100644 --- a/src/screens/Reader.tsx +++ b/src/screens/Reader.tsx @@ -111,7 +111,11 @@ export default function Reader() { .then((response) => response.data) .then((data:IChapter) => { setChapter(data); - setCurPage(data.lastPageRead); + + if (data.lastPageRead === data.pageCount - 1) { + // last page, also probably read = true, we will load the first page. + setCurPage(0); + } else setCurPage(data.lastPageRead); }); }, [chapterIndex]);