Add page gap between chapters with disabled transition page

closes #1116
This commit is contained in:
schroda
2026-06-14 15:05:51 +02:00
parent 55b597c44e
commit 7153441822
4 changed files with 18 additions and 5 deletions

View File

@@ -50,6 +50,15 @@ export const getSetReaderWidth = (
return readerWidth?.value;
};
export const getPageGap = (
pageGap: IReaderSettings['pageGap'],
readingMode: IReaderSettings['readingMode'],
): IReaderSettings['pageGap'] => {
const isWebtoonMode = readingMode === ReadingMode.WEBTOON;
return isWebtoonMode ? 0 : pageGap;
};
export const isContinuousReadingMode = (readingMode: IReaderSettings['readingMode']): boolean =>
[ReadingMode.CONTINUOUS_VERTICAL, ReadingMode.CONTINUOUS_HORIZONTAL, ReadingMode.WEBTOON].includes(readingMode);

View File

@@ -17,6 +17,7 @@ import { PageInViewportType, ReaderResumeMode, ReadingDirection, ReadingMode } f
import { MediaQuery } from '@/base/utils/MediaQuery.tsx';
import { ReaderControls } from '@/features/reader/services/ReaderControls.ts';
import {
getPageGap,
isContinuousReadingMode,
isContinuousVerticalReadingMode,
shouldApplyReaderWidth,
@@ -98,6 +99,7 @@ const BaseReaderViewer = ({
customFilter,
shouldStretchPage,
isStaticNav,
shouldShowTransitionPage,
} = useReaderSettingsStore((state) => ({
readingMode: state.readingMode.value,
readingDirection: state.readingDirection.value,
@@ -109,6 +111,7 @@ const BaseReaderViewer = ({
customFilter: state.customFilter,
shouldStretchPage: state.shouldStretchPage.value,
isStaticNav: state.isStaticNav,
shouldShowTransitionPage: state.shouldShowTransitionPage,
}));
const safeAreaInset = useReaderSettingsStore('safeAreaInset');
const { resumeMode = ReaderResumeMode.START } = useLocation<RouteStateReader>().state ?? STABLE_EMPTY_OBJECT;
@@ -254,6 +257,9 @@ const BaseReaderViewer = ({
height: '100%',
overflow: 'auto',
flexWrap: 'nowrap',
...applyStyles(isContinuousReadingModeActive && !shouldShowTransitionPage, {
gap: `${getPageGap(pageGap, readingMode)}px`,
}),
...applyStyles(
isContinuousVerticalReadingModeActive && shouldApplyReaderWidth(readerWidth, pageScaleMode),
{ alignItems: 'center' },

View File

@@ -9,8 +9,8 @@
import { memo } from 'react';
import { BasePager } from '@/features/reader/viewer/pager/components/BasePager.tsx';
import type { ReaderPagerProps } from '@/features/reader/Reader.types.ts';
import { ReadingMode } from '@/features/reader/Reader.types.ts';
import { createReaderPage } from '@/features/reader/viewer/pager/ReaderPager.utils.tsx';
import { getPageGap } from '@/features/reader/settings/ReaderSettings.utils.tsx';
const BaseReaderVerticalPager = ({
onLoad,
@@ -22,9 +22,6 @@ const BaseReaderVerticalPager = ({
}: ReaderPagerProps) => {
const { currentPageIndex, totalPages, readingMode, pageGap } = props;
const isWebtoonMode = readingMode === ReadingMode.WEBTOON;
const actualPageGap = isWebtoonMode ? 0 : pageGap;
return (
<BasePager
{...props}
@@ -45,7 +42,7 @@ const BaseReaderVerticalPager = ({
pageLoadStates[page.primary.index].error ? retryFailedPagesKeyPrefix : undefined,
undefined,
undefined,
page.primary.index !== 0 ? actualPageGap : 0,
page.primary.index !== 0 ? getPageGap(pageGap, readingMode) : 0,
setRef,
)
}