Simplify ReaderControls#useOpenChapter

This commit is contained in:
schroda
2025-09-20 19:51:26 +02:00
parent 1c0b982bae
commit f5c7379fc4
6 changed files with 187 additions and 229 deletions

View File

@@ -7,9 +7,7 @@
*/
import { memo } from 'react';
import { withPropsFrom } from '@/base/hoc/withPropsFrom.tsx';
import { useReaderInfiniteScrollUpdateChapter } from '@/features/reader/infinite-scroll/useReaderInfiniteScrollUpdateChapter.ts';
import { ReaderControls } from '@/features/reader/services/ReaderControls.ts';
import { ChapterIdInfo } from '@/features/chapter/Chapter.types.ts';
const BaseReaderInfiniteScrollUpdateChapter = ({
@@ -20,7 +18,6 @@ const BaseReaderInfiniteScrollUpdateChapter = ({
isCurrentChapter,
isNextChapterVisible,
imageWrapper,
openChapter,
scrollElement,
}: {
chapterId: ChapterIdInfo['id'];
@@ -30,7 +27,6 @@ const BaseReaderInfiniteScrollUpdateChapter = ({
isCurrentChapter: boolean;
isNextChapterVisible: boolean;
imageWrapper: HTMLElement | null;
openChapter: ReturnType<typeof ReaderControls.useOpenChapter>;
scrollElement: HTMLElement | null;
}) => {
useReaderInfiniteScrollUpdateChapter(
@@ -39,7 +35,6 @@ const BaseReaderInfiniteScrollUpdateChapter = ({
previousChapterId,
isCurrentChapter,
isPreviousChapterVisible,
openChapter,
imageWrapper,
scrollElement,
);
@@ -49,7 +44,6 @@ const BaseReaderInfiniteScrollUpdateChapter = ({
nextChapterId,
isCurrentChapter,
isNextChapterVisible,
openChapter,
imageWrapper,
scrollElement,
);
@@ -57,8 +51,4 @@ const BaseReaderInfiniteScrollUpdateChapter = ({
return null;
};
export const ReaderInfiniteScrollUpdateChapter = withPropsFrom(
memo(BaseReaderInfiniteScrollUpdateChapter),
[() => ({ openChapter: ReaderControls.useOpenChapter() })],
['openChapter'],
);
export const ReaderInfiniteScrollUpdateChapter = memo(BaseReaderInfiniteScrollUpdateChapter);

View File

@@ -7,7 +7,6 @@
*/
import { useCallback, useEffect, useMemo } from 'react';
import { ReaderControls } from '@/features/reader/services/ReaderControls.ts';
import { ReadingDirection, ReadingMode } from '@/features/reader/Reader.types.ts';
import {
isContinuousReadingMode,
@@ -17,6 +16,7 @@ import { READING_DIRECTION_TO_THEME_DIRECTION } from '@/features/reader/settings
import { getOptionForDirection } from '@/features/theme/services/ThemeCreator.ts';
import { useIntersectionObserver } from '@/base/hooks/useIntersectionObserver.tsx';
import { getReaderStore, useReaderStoreShallow } from '@/features/reader/stores/ReaderStore.ts';
import { ReaderControls } from '@/features/reader/services/ReaderControls.ts';
interface ElementIntersection {
start: boolean;
@@ -242,7 +242,6 @@ export const useReaderInfiniteScrollUpdateChapter = (
chapterToOpenId: number | undefined,
isCurrentChapter: boolean,
isChapterToOpenVisible: boolean,
openChapter: ReturnType<typeof ReaderControls.useOpenChapter>,
image: HTMLElement | null,
scrollElement: HTMLElement | null,
) => {
@@ -286,7 +285,7 @@ export const useReaderInfiniteScrollUpdateChapter = (
const loadChapter = loadPreviousChapter || loadNextChapter;
if (loadChapter) {
openChapter(chapterToOpenId, undefined, false);
ReaderControls.openChapter(chapterToOpenId, undefined, false);
}
};
@@ -300,7 +299,6 @@ export const useReaderInfiniteScrollUpdateChapter = (
isCurrentChapter,
isChapterToOpenVisible,
chapterToOpenId,
openChapter,
]);
useIntersectionObserver(
@@ -347,12 +345,12 @@ export const useReaderInfiniteScrollUpdateChapter = (
const openChapterToOpen = initialOpenPreviousChapter || openNextChapter;
if (openChapterToOpen) {
openChapter(chapterToOpenId, !isChapterToOpenVisible, false);
ReaderControls.openChapter(chapterToOpenId, !isChapterToOpenVisible, false);
return;
}
if (openPreviousChapter) {
openChapter(chapterId, false, false);
ReaderControls.openChapter(chapterId, false, false);
}
},
[
@@ -365,7 +363,6 @@ export const useReaderInfiniteScrollUpdateChapter = (
readingDirection,
shouldUseInfiniteScroll,
shouldShowTransitionPage,
openChapter,
],
),
useMemo(