Fix reader page preservation on window resize
For some reason mantines "useWindowEvent" uses a stale callback. I have no clue why that happens, it is not reproducible in a codesandbox
This commit is contained in:
@@ -8,7 +8,6 @@
|
||||
|
||||
import type { RefObject } from 'react';
|
||||
import { useCallback, useEffect, useLayoutEffect, useRef } from 'react';
|
||||
import { useWindowEvent } from '@mantine/hooks';
|
||||
import type {
|
||||
IReaderSettingsManga,
|
||||
ReaderPageScaleMode,
|
||||
@@ -73,7 +72,7 @@ const usePreserveOnWindowResize = (readingMode: ReadingMode, pageScaleMode: Read
|
||||
return;
|
||||
}
|
||||
|
||||
getReaderPagesStore().setPageToScrollToIndex(pageIndexOnResizeStartRef.current);
|
||||
getReaderPagesStore().setPageToScrollToIndex(pageIndex);
|
||||
|
||||
clearTimeout(activeResizeTimeoutRef.current);
|
||||
activeResizeTimeoutRef.current = setTimeout(() => {
|
||||
@@ -82,7 +81,11 @@ const usePreserveOnWindowResize = (readingMode: ReadingMode, pageScaleMode: Read
|
||||
}, 50);
|
||||
}, [readingMode, pageScaleMode, pageIndex]);
|
||||
|
||||
useWindowEvent('resize', handleResize);
|
||||
// TODO - revert back to mantines useWindowEvent hook once the issue of it using a stale callback can be fixed
|
||||
useEffect(() => {
|
||||
window.addEventListener('resize', handleResize);
|
||||
return () => window.removeEventListener('resize', handleResize);
|
||||
}, [handleResize]);
|
||||
};
|
||||
|
||||
interface ScrollPreservationInfo {
|
||||
|
||||
Reference in New Issue
Block a user