From 99868f29b2c2405cf0bdfb0ca0e483ad1c853df1 Mon Sep 17 00:00:00 2001 From: Richard Roberson Date: Fri, 21 Feb 2025 12:01:52 -0700 Subject: [PATCH] EPUB resize debounce working perfectly --- src/components/EPUBViewer.tsx | 6 +++--- src/contexts/TTSContext.tsx | 2 +- src/hooks/epub/useEPUBResize.ts | 12 ++++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/components/EPUBViewer.tsx b/src/components/EPUBViewer.tsx index a9389a2..ec4a3f9 100644 --- a/src/components/EPUBViewer.tsx +++ b/src/components/EPUBViewer.tsx @@ -79,17 +79,17 @@ export function EPUBViewer({ className = '' }: EPUBViewerProps) { }, [extractPageText]); const checkResize = useCallback(() => { - if (isResizing && bookRef.current?.isOpen && rendition.current && isEPUBSetOnce.current) { + if (isResizing && dimensions && bookRef.current?.isOpen && rendition.current && isEPUBSetOnce.current) { pause(); // Only extract text when we have dimensions, ensuring the resize is complete - if (dimensions) extractPageText(bookRef.current, rendition.current, true); + extractPageText(bookRef.current, rendition.current, true); setIsResizing(false); return true; } else { return false; } - }, [isResizing, dimensions, pause, extractPageText]); + }, [isResizing, setIsResizing, dimensions, pause, extractPageText]); // Check for isResizing to pause TTS and re-extract text useEffect(() => { diff --git a/src/contexts/TTSContext.tsx b/src/contexts/TTSContext.tsx index b2c3cc6..0bb18a8 100644 --- a/src/contexts/TTSContext.tsx +++ b/src/contexts/TTSContext.tsx @@ -195,7 +195,7 @@ export function TTSProvider({ children }: { children: ReactNode }) { setSentences([]); setCurrDocPage(location); - }, [abortAudio, isPlaying]); + }, [abortAudio]); /** * Moves to the next or previous sentence diff --git a/src/hooks/epub/useEPUBResize.ts b/src/hooks/epub/useEPUBResize.ts index 015ddfc..f51ae37 100644 --- a/src/hooks/epub/useEPUBResize.ts +++ b/src/hooks/epub/useEPUBResize.ts @@ -10,12 +10,16 @@ export function useEPUBResize(containerRef: RefObject) { const entries = args[0] as ResizeObserverEntry[]; console.log('Debounced resize', entries[0].contentRect); setDimensions(entries[0].contentRect); + setIsResizing((prev) => { + if (!prev) return true; + return prev; + }); }, 150); const resizeObserver = new ResizeObserver((entries) => { - if (!isResizing) { - setIsResizing(true); - } + // if (!isResizing) { + // setIsResizing(true); + // } debouncedResize(entries); }); @@ -51,7 +55,7 @@ export function useEPUBResize(containerRef: RefObject) { mutationObserver.disconnect(); resizeObserver.disconnect(); }; - }, [containerRef]); + }, [containerRef]); return { isResizing, setIsResizing, dimensions }; } \ No newline at end of file