Fix opening previous/next page via user action

Regression 55dc9471d9
This commit is contained in:
schroda
2024-12-31 04:24:47 +01:00
parent 9ab6ec89c7
commit a0df80f60a
3 changed files with 13 additions and 12 deletions

View File

@@ -112,7 +112,7 @@ const BaseReaderTransitionPage = ({
const isFitWidthPageScaleMode = [ReaderPageScaleMode.SCREEN, ReaderPageScaleMode.WIDTH].includes(pageScaleMode); const isFitWidthPageScaleMode = [ReaderPageScaleMode.SCREEN, ReaderPageScaleMode.WIDTH].includes(pageScaleMode);
if (!isTransitionPageVisible(transitionPageMode, readingMode, type)) { if (!isTransitionPageVisible(type, transitionPageMode, readingMode)) {
return null; return null;
} }

View File

@@ -35,9 +35,9 @@ import {
READING_DIRECTION_TO_THEME_DIRECTION, READING_DIRECTION_TO_THEME_DIRECTION,
} from '@/modules/reader/constants/ReaderSettings.constants.tsx'; } from '@/modules/reader/constants/ReaderSettings.constants.tsx';
import { import {
isATransitionPageVisible,
isEndOfPageInViewport, isEndOfPageInViewport,
isPageInViewport, isPageInViewport,
isTransitionPageVisible,
} from '@/modules/reader/utils/ReaderPager.utils.tsx'; } from '@/modules/reader/utils/ReaderPager.utils.tsx';
import { useReaderOverlayContext } from '@/modules/reader/contexts/ReaderOverlayContext.tsx'; import { useReaderOverlayContext } from '@/modules/reader/contexts/ReaderOverlayContext.tsx';
import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx'; import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx';
@@ -262,7 +262,7 @@ export class ReaderControls {
const { previousChapter, nextChapter } = useReaderStateChaptersContext(); const { previousChapter, nextChapter } = useReaderStateChaptersContext();
const { setIsVisible: setIsOverlayVisible } = useReaderOverlayContext(); const { setIsVisible: setIsOverlayVisible } = useReaderOverlayContext();
const { setShowPreview } = useReaderTapZoneContext(); const { setShowPreview } = useReaderTapZoneContext();
const { readingDirection, readingMode } = ReaderService.useSettings(); const { readingDirection } = ReaderService.useSettings();
const openChapter = ReaderControls.useOpenChapter(); const openChapter = ReaderControls.useOpenChapter();
const currentPage = useMemo(() => getPage(currentPageIndex, pages), [currentPageIndex, pages]); const currentPage = useMemo(() => getPage(currentPageIndex, pages), [currentPageIndex, pages]);
@@ -280,7 +280,7 @@ export class ReaderControls {
const isFirstPage = currentPage.primary.index === 0; const isFirstPage = currentPage.primary.index === 0;
const isLastPage = currentPageIndex === indexOfLastPage; const isLastPage = currentPageIndex === indexOfLastPage;
const isATransitionPageVisible = isTransitionPageVisible(transitionPageMode, readingMode.value); const isATransitionPageVisibleFlag = isATransitionPageVisible(transitionPageMode);
return useCallback( return useCallback(
(page, forceDirection = direction, hideOverlay: boolean = true) => { (page, forceDirection = direction, hideOverlay: boolean = true) => {
@@ -304,20 +304,20 @@ export class ReaderControls {
} }
const shouldOpenPreviousChapter = const shouldOpenPreviousChapter =
isFirstPage && isATransitionPageVisible && convertedPage === 'previous' && !!previousChapter; isFirstPage && isATransitionPageVisibleFlag && convertedPage === 'previous' && !!previousChapter;
if (shouldOpenPreviousChapter) { if (shouldOpenPreviousChapter) {
openChapter('previous'); openChapter('previous');
return; return;
} }
const shouldOpenNextChapter = const shouldOpenNextChapter =
isLastPage && isATransitionPageVisible && convertedPage === 'next' && !!nextChapter; isLastPage && isATransitionPageVisibleFlag && convertedPage === 'next' && !!nextChapter;
if (shouldOpenNextChapter) { if (shouldOpenNextChapter) {
openChapter('next'); openChapter('next');
return; return;
} }
const needToHideTransitionPage = isATransitionPageVisible; const needToHideTransitionPage = isATransitionPageVisibleFlag;
switch (convertedPage) { switch (convertedPage) {
case 'previous': case 'previous':
if (isFirstPage) { if (isFirstPage) {
@@ -358,7 +358,7 @@ export class ReaderControls {
previousPageIndex, previousPageIndex,
nextPageIndex, nextPageIndex,
indexOfLastPage, indexOfLastPage,
isATransitionPageVisible, isATransitionPageVisibleFlag,
isFirstPage, isFirstPage,
isLastPage, isLastPage,
openChapter, openChapter,

View File

@@ -484,12 +484,13 @@ export const getPageIndexesToLoad = (
}; };
export const isTransitionPageVisible = ( export const isTransitionPageVisible = (
type: ReaderTransitionPageMode,
activeMode: ReaderTransitionPageMode, activeMode: ReaderTransitionPageMode,
readingMode: IReaderSettings['readingMode'], readingMode: IReaderSettings['readingMode'],
transitionPageType: ReaderTransitionPageMode = activeMode, ): boolean => [ReaderTransitionPageMode.BOTH, type].includes(activeMode) || isContinuousReadingMode(readingMode);
): boolean =>
(activeMode !== ReaderTransitionPageMode.NONE && activeMode === transitionPageType) || export const isATransitionPageVisible = (activeMode: ReaderTransitionPageMode): boolean =>
isContinuousReadingMode(readingMode); activeMode !== ReaderTransitionPageMode.NONE;
export const getScrollIntoViewInlineOption = ( export const getScrollIntoViewInlineOption = (
offset: DirectionOffset, offset: DirectionOffset,