Make react router routing possible outside components

This commit is contained in:
schroda
2025-09-20 19:44:27 +02:00
parent b13bb86f40
commit 19e45424ae
4 changed files with 50 additions and 14 deletions

View File

@@ -166,8 +166,6 @@ export class ReaderControls {
) => void {
const { t } = useTranslation();
const openChapter = ReaderService.useNavigateToChapter();
return useCallback(
(offset, doTransitionCheck = true, scrollIntoView = true) => {
const {
@@ -250,7 +248,7 @@ export class ReaderControls {
);
}
openChapter(chapterToOpen, {
ReaderService.navigateToChapter(chapterToOpen, {
resumeMode: getReaderOpenChapterResumeMode(
isSpecificChapterMode || !keepRenderedChapters,
isPreviousChapter,
@@ -264,7 +262,7 @@ export class ReaderControls {
doOpenChapter().catch(defaultPromiseErrorHandler('ReaderControls#useOpenChapter'));
},
[t, openChapter],
[t],
);
}

View File

@@ -47,6 +47,7 @@ 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 { ReactRouter } from '@/lib/react-router/ReactRouter.ts';
const DIRECTION_TO_INVERTED: Record<Direction, Direction> = {
ltr: 'rtl',
@@ -71,15 +72,11 @@ export class ReaderService {
return ReaderService.chapterUpdateQueues.get(id)!;
}
static useNavigateToChapter(): (chapter: TChapterReader, state?: ReaderOpenChapterLocationState) => void {
const navigate = useNavigate();
return useCallback((chapter, state) => {
navigate(Chapters.getReaderUrl(chapter), {
replace: true,
state,
});
}, []);
static navigateToChapter(chapter: TChapterReader, state?: ReaderOpenChapterLocationState): void {
ReactRouter.navigate(Chapters.getReaderUrl(chapter), {
replace: true,
state,
});
}
static downloadAhead(