Add dedicated store access util functions
Makes it easier to find the specific store slice usage
This commit is contained in:
@@ -48,7 +48,13 @@ import { ChapterIdInfo, TChapterReader } from '@/features/chapter/Chapter.types.
|
||||
import { awaitConfirmation } from '@/base/utils/AwaitableDialog.tsx';
|
||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||
import { TReaderProgressCurrentPage } from '@/features/reader/overlay/progress-bar/ReaderProgressBar.types.ts';
|
||||
import { getReaderStore } from '@/features/reader/stores/ReaderStore.ts';
|
||||
import {
|
||||
getReaderChaptersStore,
|
||||
getReaderOverlayStore,
|
||||
getReaderPagesStore,
|
||||
getReaderSettingsStore,
|
||||
getReaderTapZoneStore,
|
||||
} from '@/features/reader/stores/ReaderStore.ts';
|
||||
|
||||
const getScrollDirectionInvert = (
|
||||
scrollDirection: ScrollDirection,
|
||||
@@ -118,7 +124,7 @@ export class ReaderControls {
|
||||
const getNewScrollPosition = (currentPos: number, elementSize: number) =>
|
||||
currentPos + elementSize * scrollAmount * scrollDirection;
|
||||
|
||||
getReaderStore().overlay.setIsVisible(false);
|
||||
getReaderOverlayStore().setIsVisible(false);
|
||||
setShowPreview(false);
|
||||
|
||||
const doScroll = (
|
||||
@@ -162,16 +168,15 @@ export class ReaderControls {
|
||||
scrollIntoView: boolean = true,
|
||||
): void {
|
||||
const {
|
||||
chapters: {
|
||||
currentChapter,
|
||||
previousChapter,
|
||||
nextChapter,
|
||||
chapters,
|
||||
visibleChapters: { lastLeadingChapterSourceOrder, lastTrailingChapterSourceOrder },
|
||||
setReaderStateChapters,
|
||||
},
|
||||
settings: { shouldInformAboutMissingChapter, shouldInformAboutScanlatorChange, shouldUseInfiniteScroll },
|
||||
} = getReaderStore();
|
||||
currentChapter,
|
||||
previousChapter,
|
||||
nextChapter,
|
||||
chapters,
|
||||
visibleChapters: { lastLeadingChapterSourceOrder, lastTrailingChapterSourceOrder },
|
||||
setReaderStateChapters,
|
||||
} = getReaderChaptersStore();
|
||||
const { shouldInformAboutMissingChapter, shouldInformAboutScanlatorChange, shouldUseInfiniteScroll } =
|
||||
getReaderSettingsStore();
|
||||
|
||||
if (!currentChapter) {
|
||||
return;
|
||||
@@ -311,10 +316,9 @@ export class ReaderControls {
|
||||
}
|
||||
|
||||
static openPage(page: number | 'previous' | 'next', forceDirection?: Direction, hideOverlay: boolean = true): void {
|
||||
const {
|
||||
pages: { currentPageIndex, setPageToScrollToIndex, pages, transitionPageMode, setTransitionPageMode },
|
||||
settings: { readingDirection, readingMode, shouldShowTransitionPage },
|
||||
} = getReaderStore();
|
||||
const { currentPageIndex, setPageToScrollToIndex, pages, transitionPageMode, setTransitionPageMode } =
|
||||
getReaderPagesStore();
|
||||
const { readingDirection, readingMode, shouldShowTransitionPage } = getReaderSettingsStore();
|
||||
|
||||
const direction = READING_DIRECTION_TO_THEME_DIRECTION[readingDirection.value];
|
||||
|
||||
@@ -336,8 +340,8 @@ export class ReaderControls {
|
||||
const isContinuousReadingModeActive = isContinuousReadingMode(readingMode.value);
|
||||
|
||||
if (hideOverlay) {
|
||||
getReaderStore().overlay.setIsVisible(false);
|
||||
getReaderStore().tapZone.setShowPreview(false);
|
||||
getReaderOverlayStore().setIsVisible(false);
|
||||
getReaderTapZoneStore().setShowPreview(false);
|
||||
}
|
||||
|
||||
const hideTransitionPage = () => setTransitionPageMode(ReaderTransitionPageMode.NONE);
|
||||
@@ -360,7 +364,7 @@ export class ReaderControls {
|
||||
isFirstPage &&
|
||||
(!shouldShowTransitionPage || isPreviousTransitionPageVisible) &&
|
||||
convertedPage === 'previous' &&
|
||||
!!getReaderStore().chapters.previousChapter;
|
||||
!!getReaderChaptersStore().previousChapter;
|
||||
if (shouldOpenPreviousChapter) {
|
||||
ReaderControls.openChapter('previous');
|
||||
return;
|
||||
@@ -370,7 +374,7 @@ export class ReaderControls {
|
||||
isLastPage &&
|
||||
(!shouldShowTransitionPage || isNextTransitionPageVisible) &&
|
||||
convertedPage === 'next' &&
|
||||
!!getReaderStore().chapters.nextChapter;
|
||||
!!getReaderChaptersStore().nextChapter;
|
||||
if (shouldOpenNextChapter) {
|
||||
ReaderControls.openChapter('next');
|
||||
return;
|
||||
@@ -415,17 +419,15 @@ export class ReaderControls {
|
||||
|
||||
return useCallback(
|
||||
(pageIndex, debounceChapterUpdate = true, endReached = false) => {
|
||||
const { currentPageIndex, setCurrentPageIndex } = getReaderPagesStore();
|
||||
const {
|
||||
pages: { currentPageIndex, setCurrentPageIndex },
|
||||
chapters: {
|
||||
currentChapter,
|
||||
chapters,
|
||||
previousChapter,
|
||||
nextChapter,
|
||||
visibleChapters,
|
||||
setReaderStateChapters,
|
||||
},
|
||||
} = getReaderStore();
|
||||
currentChapter,
|
||||
chapters,
|
||||
previousChapter,
|
||||
nextChapter,
|
||||
visibleChapters,
|
||||
setReaderStateChapters,
|
||||
} = getReaderChaptersStore();
|
||||
|
||||
if (pageIndex === currentPageIndex && !endReached) {
|
||||
return;
|
||||
@@ -526,14 +528,14 @@ export class ReaderControls {
|
||||
return;
|
||||
}
|
||||
|
||||
const { readingMode, readingDirection, isStaticNav, scrollAmount } = getReaderStore().settings;
|
||||
const { readingMode, readingDirection, isStaticNav, scrollAmount } = getReaderSettingsStore();
|
||||
|
||||
const rect = e.currentTarget.getBoundingClientRect();
|
||||
const rectRelativeX = e.clientX - rect.left;
|
||||
const rectRelativeY = e.clientY - rect.top;
|
||||
const action = ReaderTapZoneService.getAction(rectRelativeX, rectRelativeY);
|
||||
|
||||
getReaderStore().tapZone.setShowPreview(false);
|
||||
getReaderTapZoneStore().setShowPreview(false);
|
||||
|
||||
const isContinuousReadingModeActive = isContinuousReadingMode(readingMode.value);
|
||||
const scrollDirection =
|
||||
@@ -541,7 +543,7 @@ export class ReaderControls {
|
||||
|
||||
switch (action) {
|
||||
case TapZoneRegionType.MENU:
|
||||
getReaderStore().overlay.setIsVisible(isStaticNav || !getReaderStore().overlay.isVisible);
|
||||
getReaderOverlayStore().setIsVisible(isStaticNav || !getReaderOverlayStore().isVisible);
|
||||
break;
|
||||
case TapZoneRegionType.PREVIOUS:
|
||||
case TapZoneRegionType.NEXT:
|
||||
@@ -552,7 +554,7 @@ export class ReaderControls {
|
||||
readingMode.value,
|
||||
readingDirection.value,
|
||||
scrollElement,
|
||||
getReaderStore().tapZone.setShowPreview,
|
||||
getReaderTapZoneStore().setShowPreview,
|
||||
scrollAmount,
|
||||
);
|
||||
} else {
|
||||
|
||||
@@ -46,7 +46,12 @@ import { getErrorMessage } from '@/lib/HelperFunctions.ts';
|
||||
import { FALLBACK_MANGA } from '@/features/manga/Manga.constants.ts';
|
||||
import { getMetadataKey } from '@/features/metadata/Metadata.utils.ts';
|
||||
import { DirectionOffset } from '@/base/Base.types.ts';
|
||||
import { getReaderStore, useReaderStore } from '@/features/reader/stores/ReaderStore.ts';
|
||||
import {
|
||||
getReaderChaptersStore,
|
||||
getReaderSettingsStore,
|
||||
getReaderStore,
|
||||
useReaderSettingsStore,
|
||||
} from '@/features/reader/stores/ReaderStore.ts';
|
||||
import { ReactRouter } from '@/lib/react-router/ReactRouter.ts';
|
||||
|
||||
const DIRECTION_TO_INVERTED: Record<Direction, Direction> = {
|
||||
@@ -152,11 +157,9 @@ export class ReaderService {
|
||||
|
||||
return useCallback(
|
||||
(patch) => {
|
||||
const {
|
||||
manga,
|
||||
chapters: { currentChapter, mangaChapters, chapters },
|
||||
settings: { shouldSkipDupChapters },
|
||||
} = getReaderStore();
|
||||
const { manga } = getReaderStore();
|
||||
const { currentChapter, mangaChapters, chapters } = getReaderChaptersStore();
|
||||
const { shouldSkipDupChapters } = getReaderSettingsStore();
|
||||
|
||||
if (!manga || !currentChapter || !mangaChapters) {
|
||||
return;
|
||||
@@ -227,7 +230,7 @@ export class ReaderService {
|
||||
|
||||
static useGetThemeDirection(): Direction {
|
||||
const { direction } = useTheme();
|
||||
const readingDirection = useReaderStore((state) => state.settings.readingDirection.value);
|
||||
const readingDirection = useReaderSettingsStore((state) => state.settings.readingDirection.value);
|
||||
|
||||
return DIRECTION_TO_READING_DIRECTION[direction] === readingDirection
|
||||
? direction
|
||||
@@ -336,7 +339,7 @@ export class ReaderService {
|
||||
|
||||
static useOverlayMode(): { mode: ReaderOverlayMode; isDesktop: boolean; isMobile: boolean } {
|
||||
const isTouchDevice = MediaQuery.useIsTouchDevice();
|
||||
const overlayMode = useReaderStore((state) => state.settings.overlayMode);
|
||||
const overlayMode = useReaderSettingsStore((state) => state.settings.overlayMode);
|
||||
|
||||
const isAutoModeSelected = overlayMode === ReaderOverlayMode.AUTO;
|
||||
const isDesktopModeSelected = overlayMode === ReaderOverlayMode.DESKTOP;
|
||||
@@ -353,7 +356,7 @@ export class ReaderService {
|
||||
}
|
||||
|
||||
static useExit(): () => void {
|
||||
const exitMode = useReaderStore((state) => state.settings.exitMode);
|
||||
const exitMode = useReaderSettingsStore((state) => state.settings.exitMode);
|
||||
const handleBack = useBackButton();
|
||||
const navigate = useNavigate();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user