From 3771890f987e1b5bf7a03927a3afb679c6930c1c Mon Sep 17 00:00:00 2001 From: Aarnav Tale Date: Sat, 29 Mar 2025 14:27:56 -0400 Subject: [PATCH] fix: disable live data fetching when a dialog is open --- app/components/Dialog.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/components/Dialog.tsx b/app/components/Dialog.tsx index a67e18b..d0de911 100644 --- a/app/components/Dialog.tsx +++ b/app/components/Dialog.tsx @@ -1,4 +1,4 @@ -import React, { cloneElement, useRef } from 'react'; +import React, { cloneElement, useEffect, useRef } from 'react'; import { type AriaDialogProps, type AriaModalOverlayProps, @@ -19,6 +19,7 @@ import IconButton, { IconButtonProps } from '~/components/IconButton'; import Text from '~/components/Text'; import Title from '~/components/Title'; import cn from '~/utils/cn'; +import { useLiveData } from '~/utils/live-data'; export interface DialogProps extends OverlayTriggerProps { children: @@ -30,6 +31,7 @@ export interface DialogProps extends OverlayTriggerProps { } function Dialog(props: DialogProps) { + const { pause, resume } = useLiveData(); const state = useOverlayTriggerState(props); const { triggerProps, overlayProps } = useOverlayTrigger( { @@ -38,6 +40,14 @@ function Dialog(props: DialogProps) { state, ); + useEffect(() => { + if (state.isOpen) { + pause(); + } else { + resume(); + } + }, [state.isOpen]); + if (Array.isArray(props.children)) { const [button, panel] = props.children; return (