From f5272b84025990932dd47d0748c9a0b96ff8f9c4 Mon Sep 17 00:00:00 2001 From: Ian Paschal Date: Wed, 26 Aug 2026 07:55:11 +0200 Subject: [PATCH] CC-124: `` State Not Reset on File Change --- src/components/PdfViewer/PdfViewer.hooks.ts | 10 ++++++++++ src/components/PdfViewer/PdfViewer.tsx | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/components/PdfViewer/PdfViewer.hooks.ts b/src/components/PdfViewer/PdfViewer.hooks.ts index 4a88811..327f956 100644 --- a/src/components/PdfViewer/PdfViewer.hooks.ts +++ b/src/components/PdfViewer/PdfViewer.hooks.ts @@ -31,6 +31,7 @@ export const DEFAULT_CONFIG: PdfViewerConfig = { }; export const usePdfViewer = ( + file: string | File | ArrayBuffer | null, customConfig?: Partial, ): UsePdfViewerReturn => { const config = { @@ -39,6 +40,7 @@ export const usePdfViewer = ( }; const containerRef = useRef(null); const ref = useRef(null); + const [prevFile, setPrevFile] = useState(file); const [numPages, setNumPages] = useState(null); const [pageNumber, setPageNumber] = useState(config.initialPage); const [scale, setScale] = useState(config.initialScale ?? 1); @@ -46,6 +48,14 @@ export const usePdfViewer = ( const isScrollingTo = useRef(false); const scrollTimeoutRef = useRef>(); + if (file !== prevFile) { + setPrevFile(file); + setNumPages(null); + setPageNumber(config.initialPage); + setScale(config.initialScale ?? 1); + pdfPageWidthRef.current = null; + } + useEffect(() => () => clearTimeout(scrollTimeoutRef.current), []); const scrollToPage = useCallback((page: number) => { diff --git a/src/components/PdfViewer/PdfViewer.tsx b/src/components/PdfViewer/PdfViewer.tsx index ef2f740..0dca5f9 100644 --- a/src/components/PdfViewer/PdfViewer.tsx +++ b/src/components/PdfViewer/PdfViewer.tsx @@ -39,7 +39,7 @@ export const PdfViewer = ({ if (workerSrc && pdfjs.GlobalWorkerOptions.workerSrc !== workerSrc) { pdfjs.GlobalWorkerOptions.workerSrc = workerSrc; } - const viewer = usePdfViewer(restConfig); + const viewer = usePdfViewer(file, restConfig); return (
{(loading || viewer.state.numPages === null) && (