From 06153de0aa2220b1a289d07a85498b38bee08e57 Mon Sep 17 00:00:00 2001 From: Alf Eaton Date: Wed, 2 Jul 2025 11:25:06 +0100 Subject: [PATCH] Fix Add Comment observer disconnect (#26565) GitOrigin-RevId: bb84aa25d744a9b035a70c877c934156c2675cbd --- .../components/review-panel-add-comment.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/services/web/frontend/js/features/review-panel-new/components/review-panel-add-comment.tsx b/services/web/frontend/js/features/review-panel-new/components/review-panel-add-comment.tsx index 87f9934395..f3e8b88a47 100644 --- a/services/web/frontend/js/features/review-panel-new/components/review-panel-add-comment.tsx +++ b/services/web/frontend/js/features/review-panel-new/components/review-panel-add-comment.tsx @@ -102,19 +102,25 @@ export const ReviewPanelAddComment = memo<{ } }, []) + const observerRef = useRef(null) + const handleElement = useCallback( (element: HTMLElement | null) => { if (element) { element.dispatchEvent(new Event('review-panel:position')) - const observer = new MutationObserver(observerCallback) + observerRef.current = new MutationObserver(observerCallback) const entryWrapper = element.closest('.review-panel-entry') if (entryWrapper) { - observer.observe(entryWrapper, { + observerRef.current.observe(entryWrapper, { attributes: true, attributeFilter: ['style'], }) - return () => observer.disconnect() + } + } else { + // [TODO React 19] return a cleanup function instead of using null element + if (observerRef.current) { + observerRef.current.disconnect() } } },