From 6bf3e297ef93ed6cb7d2488af34ed65304617a81 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Mon, 30 Dec 2024 14:11:28 +0100 Subject: [PATCH] Open previous/next chapter at end of continuous pager via hotkey For continuous pagers the chapter transition page is always visible regardless of the current "transitionPageMode". However, this was not properly checked and thus, it wasn't considered to be visible and instead of opening the previous/next chapter, the transition page got set to be visible first and only with the second hotkey press did the chapter get opened --- .../reader/components/viewer/ReaderTransitionPage.tsx | 2 +- src/modules/reader/services/ReaderControls.ts | 8 ++++++-- src/modules/reader/utils/ReaderPager.utils.tsx | 5 +++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/modules/reader/components/viewer/ReaderTransitionPage.tsx b/src/modules/reader/components/viewer/ReaderTransitionPage.tsx index 2db8329c..47ac5e2f 100644 --- a/src/modules/reader/components/viewer/ReaderTransitionPage.tsx +++ b/src/modules/reader/components/viewer/ReaderTransitionPage.tsx @@ -112,7 +112,7 @@ const BaseReaderTransitionPage = ({ const isFitWidthPageScaleMode = [ReaderPageScaleMode.SCREEN, ReaderPageScaleMode.WIDTH].includes(pageScaleMode); - if (!isTransitionPageVisible(type, transitionPageMode, readingMode)) { + if (!isTransitionPageVisible(transitionPageMode, readingMode, type)) { return null; } diff --git a/src/modules/reader/services/ReaderControls.ts b/src/modules/reader/services/ReaderControls.ts index ad24fbf6..fa26342a 100644 --- a/src/modules/reader/services/ReaderControls.ts +++ b/src/modules/reader/services/ReaderControls.ts @@ -34,7 +34,11 @@ import { ReaderScrollAmount, READING_DIRECTION_TO_THEME_DIRECTION, } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -import { isEndOfPageInViewport, isPageInViewport } from '@/modules/reader/utils/ReaderPager.utils.tsx'; +import { + isEndOfPageInViewport, + isPageInViewport, + isTransitionPageVisible, +} from '@/modules/reader/utils/ReaderPager.utils.tsx'; import { useReaderOverlayContext } from '@/modules/reader/contexts/ReaderOverlayContext.tsx'; import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx'; import { TapZoneRegionType } from '@/modules/reader/types/TapZoneLayout.types.ts'; @@ -273,7 +277,7 @@ export class ReaderControls { const isFirstPage = currentPage.primary.index === 0; const isLastPage = currentPageIndex === indexOfLastPage; - const isATransitionPageVisible = transitionPageMode !== ReaderTransitionPageMode.NONE; + const isATransitionPageVisible = isTransitionPageVisible(transitionPageMode, readingMode.value); const isContinuousReadingModeActive = isContinuousReadingMode(readingMode.value); return useCallback( diff --git a/src/modules/reader/utils/ReaderPager.utils.tsx b/src/modules/reader/utils/ReaderPager.utils.tsx index aa08b830..2d0c1d55 100644 --- a/src/modules/reader/utils/ReaderPager.utils.tsx +++ b/src/modules/reader/utils/ReaderPager.utils.tsx @@ -482,10 +482,11 @@ export const getPageIndexesToLoad = ( }; export const isTransitionPageVisible = ( - mode: ReaderTransitionPageMode, activeMode: ReaderTransitionPageMode, readingMode: IReaderSettings['readingMode'], -): boolean => [ReaderTransitionPageMode.BOTH, mode].includes(activeMode) || isContinuousReadingMode(readingMode); + transitionPageType?: ReaderTransitionPageMode, +): boolean => + [ReaderTransitionPageMode.BOTH, transitionPageType].includes(activeMode) || isContinuousReadingMode(readingMode); export const getScrollIntoViewInlineOption = ( offset: DirectionOffset,