diff --git a/src/state/queries/messages/list-converations.tsx b/src/state/queries/messages/list-converations.tsx index ce2cd707..306d4cae 100644 --- a/src/state/queries/messages/list-converations.tsx +++ b/src/state/queries/messages/list-converations.tsx @@ -16,6 +16,7 @@ import { useInfiniteQuery, useQueryClient, } from '@tanstack/react-query' +import debounce from 'lodash.debounce' import {useCurrentConvoId} from '#/state/messages/current-convo-id' import {useMessagesEventBus} from '#/state/messages/events' @@ -89,6 +90,11 @@ export function ListConvosProviderInner({ const {currentConvoId} = useCurrentConvoId() const {currentAccount} = useSession() + const debouncedRefetch = useMemo( + () => debounce(() => refetch, 500), + [refetch], + ) + useEffect(() => { const unsub = messagesBus.on( events => { @@ -96,7 +102,7 @@ export function ListConvosProviderInner({ events.logs.forEach(log => { if (ChatBskyConvoDefs.isLogBeginConvo(log)) { - refetch() + debouncedRefetch() } else if (ChatBskyConvoDefs.isLogLeaveConvo(log)) { queryClient.setQueryData(RQKEY, (old: ConvoListQueryData) => optimisticDelete(log.convoId, old), @@ -170,7 +176,7 @@ export function ListConvosProviderInner({ }), } } else { - refetch() + debouncedRefetch() } }) } @@ -183,7 +189,14 @@ export function ListConvosProviderInner({ ) return () => unsub() - }, [messagesBus, currentConvoId, refetch, queryClient, currentAccount?.did]) + }, [ + messagesBus, + currentConvoId, + refetch, + queryClient, + currentAccount?.did, + debouncedRefetch, + ]) const ctx = useMemo(() => { return data?.pages.flatMap(page => page.convos) ?? []