diff --git a/src/modules/reader/components/viewer/ReaderChapterViewer.tsx b/src/modules/reader/components/viewer/ReaderChapterViewer.tsx index 232c6f79..01a21070 100644 --- a/src/modules/reader/components/viewer/ReaderChapterViewer.tsx +++ b/src/modules/reader/components/viewer/ReaderChapterViewer.tsx @@ -103,7 +103,7 @@ const BaseReaderChapterViewer = ({ | 'retryFailedPagesKeyPrefix' | 'setTransitionPageMode' > & - Omit & + Omit & Pick< IReaderSettings, 'readingMode' | 'shouldOffsetDoubleSpreads' | 'readingDirection' | 'readerWidth' | 'pageScaleMode' @@ -450,6 +450,8 @@ const BaseReaderChapterViewer = ({ scrollbarYSize={scrollbarYSize} readerNavBarWidth={readerNavBarWidth} isPreloadMode={isPreloadMode} + resumeMode={resumeMode} + handleAsInitialRender={scrollIntoView} /> {showNextTransitionPage && ( diff --git a/src/modules/reader/components/viewer/pager/BasePager.tsx b/src/modules/reader/components/viewer/pager/BasePager.tsx index 2b2454db..00c488e7 100644 --- a/src/modules/reader/components/viewer/pager/BasePager.tsx +++ b/src/modules/reader/components/viewer/pager/BasePager.tsx @@ -10,10 +10,18 @@ import { forwardRef, memo, ReactNode, useCallback, useEffect, useMemo, useRef } import Box, { BoxProps } from '@mui/material/Box'; import { getPageIndexesToLoad, isATransitionPageVisible } from '@/modules/reader/utils/ReaderPager.utils.tsx'; import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; -import { IReaderSettings, ReaderPagerProps, ReaderTransitionPageMode } from '@/modules/reader/types/Reader.types.ts'; +import { + IReaderSettings, + ReaderPagerProps, + ReaderResumeMode, + ReaderTransitionPageMode, +} from '@/modules/reader/types/Reader.types.ts'; import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; import { isContinuousReadingMode } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; +const getPreviousCurrentPageIndex = (resumeMode: ReaderResumeMode): number => + resumeMode === ReaderResumeMode.END ? Number.MAX_SAFE_INTEGER : -1; + const BaseBasePager = forwardRef< HTMLDivElement, Omit & @@ -56,10 +64,17 @@ const BaseBasePager = forwardRef< scrollbarXSize, scrollbarYSize, readerNavBarWidth, + resumeMode, + handleAsInitialRender, }, ref, ) => { - const previousCurrentPageIndex = useRef(currentPageIndex > 0 ? Number.MAX_SAFE_INTEGER : -1); + const previousCurrentPageIndex = useRef(getPreviousCurrentPageIndex(resumeMode)); + + if (handleAsInitialRender) { + previousCurrentPageIndex.current = getPreviousCurrentPageIndex(resumeMode); + } + const pagesIndexesToRender = useMemo( () => getPageIndexesToLoad( diff --git a/src/modules/reader/types/Reader.types.ts b/src/modules/reader/types/Reader.types.ts index cf8f56b9..37a50d37 100644 --- a/src/modules/reader/types/Reader.types.ts +++ b/src/modules/reader/types/Reader.types.ts @@ -292,6 +292,8 @@ export interface ReaderPagerProps isPreviousChapter: boolean; isNextChapter: boolean; isPreloadMode: boolean; + resumeMode: ReaderResumeMode; + handleAsInitialRender: boolean; } export enum PageInViewportType {