Move reader "progress bar state" to "reader store"

This commit is contained in:
schroda
2025-09-20 14:29:48 +02:00
parent 98ec5257b9
commit f60b537115
8 changed files with 76 additions and 72 deletions

View File

@@ -23,9 +23,7 @@ import {
import { getOptionForDirection } from '@/features/theme/services/ThemeCreator.ts';
import { ProgressBarPosition } from '@/features/reader/Reader.types.ts';
import { ReaderProgressBarDirectionWrapper } from '@/features/reader/overlay/progress-bar/components/ReaderProgressBarDirectionWrapper.tsx';
import { useReaderProgressBarContext } from '@/features/reader/overlay/progress-bar/ReaderProgressBarContext.tsx';
import { withPropsFrom } from '@/base/hoc/withPropsFrom.tsx';
import { TReaderProgressBarContext } from '@/features/reader/overlay/progress-bar/ReaderProgressBar.types.ts';
import { ReaderProgressBarSlotMobile } from '@/features/reader/overlay/progress-bar/mobile/components/ReaderProgressBarSlotMobile.tsx';
import { applyStyles } from '@/base/utils/ApplyStyles.ts';
import { useResizeObserver } from '@/base/hooks/useResizeObserver.tsx';
@@ -42,12 +40,10 @@ const PROGRESS_BAR_POSITION_TO_SLIDE_DIRECTION: Record<ProgressBarPosition, Slid
};
const BaseMobileReaderProgressBar = ({
setIsMaximized,
isDragging,
direction: readerDirection,
topOffset = 0,
bottomOffset = 0,
}: Pick<TReaderProgressBarContext, 'setIsMaximized' | 'isDragging'> & {
}: {
direction: ReturnType<typeof ReaderService.useGetThemeDirection>;
topOffset?: number;
bottomOffset?: number;
@@ -67,6 +63,10 @@ const BaseMobileReaderProgressBar = ({
progressBarPosition: state.settings.progressBarPosition,
progressBarPositionAutoVertical: state.settings.progressBarPositionAutoVertical,
}));
const { setIsMaximized, isDragging } = useReaderStoreShallow((state) => ({
setIsMaximized: state.progressBar.setIsMaximized,
isDragging: state.progressBar.isDragging,
}));
const [, setRefreshProgressBarPosition] = useState({});
useResizeObserver(
@@ -354,6 +354,6 @@ const BaseMobileReaderProgressBar = ({
export const MobileReaderProgressBar = withPropsFrom(
memo(BaseMobileReaderProgressBar),
[useReaderProgressBarContext, () => ({ direction: ReaderService.useGetThemeDirection() })],
['setIsMaximized', 'isDragging', 'direction'],
[() => ({ direction: ReaderService.useGetThemeDirection() })],
['direction'],
);