fix: disable live data fetching when a dialog is open

This commit is contained in:
Aarnav Tale 2025-03-29 14:27:56 -04:00
parent bf02015dc7
commit 3771890f98
No known key found for this signature in database

View File

@ -1,4 +1,4 @@
import React, { cloneElement, useRef } from 'react'; import React, { cloneElement, useEffect, useRef } from 'react';
import { import {
type AriaDialogProps, type AriaDialogProps,
type AriaModalOverlayProps, type AriaModalOverlayProps,
@ -19,6 +19,7 @@ import IconButton, { IconButtonProps } from '~/components/IconButton';
import Text from '~/components/Text'; import Text from '~/components/Text';
import Title from '~/components/Title'; import Title from '~/components/Title';
import cn from '~/utils/cn'; import cn from '~/utils/cn';
import { useLiveData } from '~/utils/live-data';
export interface DialogProps extends OverlayTriggerProps { export interface DialogProps extends OverlayTriggerProps {
children: children:
@ -30,6 +31,7 @@ export interface DialogProps extends OverlayTriggerProps {
} }
function Dialog(props: DialogProps) { function Dialog(props: DialogProps) {
const { pause, resume } = useLiveData();
const state = useOverlayTriggerState(props); const state = useOverlayTriggerState(props);
const { triggerProps, overlayProps } = useOverlayTrigger( const { triggerProps, overlayProps } = useOverlayTrigger(
{ {
@ -38,6 +40,14 @@ function Dialog(props: DialogProps) {
state, state,
); );
useEffect(() => {
if (state.isOpen) {
pause();
} else {
resume();
}
}, [state.isOpen]);
if (Array.isArray(props.children)) { if (Array.isArray(props.children)) {
const [button, panel] = props.children; const [button, panel] = props.children;
return ( return (