diff --git a/CHANGELOG.md b/CHANGELOG.md index c23196fa..df538edb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - (**Reader**) Fix jumping back to the first page on window resize - (**Reader**) Fix chapter not getting marked as read in continuous reading mode in case the last page is not big enough to get marked as the current page - (**Reader**) Fix infinite scrolling sometimes not opening previous/next chapter +- (**Reader**) Fix preserving scroll position with RTL reading direction and a language that is read RTL - (**Browse**) Fix showing only nsfw sources in the browse source page when the "show nsfw" setting is disabled ## [20260509.01] (r3147) - 2026-05-09 diff --git a/src/features/reader/viewer/ReaderViewer.tsx b/src/features/reader/viewer/ReaderViewer.tsx index bb4f6825..8b75ab38 100644 --- a/src/features/reader/viewer/ReaderViewer.tsx +++ b/src/features/reader/viewer/ReaderViewer.tsx @@ -230,6 +230,7 @@ const BaseReaderViewer = ({ pageScaleMode, shouldStretchPage, readerWidth, + themeDirection, ); useLayoutEffect(() => { diff --git a/src/features/reader/viewer/hooks/useReaderPreserveScrollPosition.ts b/src/features/reader/viewer/hooks/useReaderPreserveScrollPosition.ts index f577ea2e..091a45fe 100644 --- a/src/features/reader/viewer/hooks/useReaderPreserveScrollPosition.ts +++ b/src/features/reader/viewer/hooks/useReaderPreserveScrollPosition.ts @@ -12,9 +12,9 @@ import type { IReaderSettingsManga, ReaderPageScaleMode, ReaderStateChapters, - ReadingDirection, ReadingMode, } from '@/features/reader/Reader.types.ts'; +import { ReadingDirection } from '@/features/reader/Reader.types.ts'; import { isContinuousReadingMode, isContinuousVerticalReadingMode, @@ -24,6 +24,7 @@ import { import { getPreviousNextChapterVisibility } from '@/features/reader/Reader.utils.ts'; import type { ChapterIdInfo, TChapterReader } from '@/features/chapter/Chapter.types.ts'; import { getReaderPagesStore, getReaderSettingsStore } from '@/features/reader/stores/ReaderStore.ts'; +import type { Direction } from '@mui/material/styles'; const shouldPreserveOnResizeChange = ( readingMode: ReadingMode, @@ -177,7 +178,12 @@ const useScrollPreservationData = ( return dataRef; }; -const usePreserveOnLeadingPageRender = (scrollElementRef: RefObject, readingMode: ReadingMode) => { +const usePreserveOnLeadingPageRender = ( + scrollElementRef: RefObject, + readingMode: ReadingMode, + readingDirection: ReadingDirection, + themeDirection: Direction, +) => { const preservationDataRef = useScrollPreservationData(scrollElementRef); const isContinuousReadingModeActive = isContinuousReadingMode(readingMode); @@ -212,7 +218,13 @@ const usePreserveOnLeadingPageRender = (scrollElementRef: RefObject left; }); const includesElementsBeforeScrollPosition = !!entriesBeforeScrollPosition.length; @@ -364,6 +376,7 @@ export const useReaderPreserveScrollPosition = ( pageScaleMode: ReaderPageScaleMode, shouldStretchPage: boolean, readerWidth: IReaderSettingsManga['readerWidth'], + themeDirection: Direction, ) => { usePreserveOnInfiniteScrollPreviousChapterInitialRender( scrollElementRef, @@ -374,7 +387,7 @@ export const useReaderPreserveScrollPosition = ( visibleChapters, isContinuousReadingMode(readingMode), ); - usePreserveOnLeadingPageRender(scrollElementRef, readingMode); + usePreserveOnLeadingPageRender(scrollElementRef, readingMode, readingDirection, themeDirection); usePreserveOnWindowResize(readingMode, pageScaleMode, currentPageIndex); usePreserveOnValueChange(readingDirection, currentPageIndex); usePreserveOnValueChange(readingMode, currentPageIndex);