From 1317d881ed2f583a65bffeb835b2d57670cce235 Mon Sep 17 00:00:00 2001 From: Samuel Newman <mozzius@protonmail.com> Date: Mon, 10 Jun 2024 15:08:13 +0100 Subject: [PATCH] debounce refetching listconvos (#4455) --- .../queries/messages/list-converations.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) 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) ?? []