debounce refetching listconvos (#4455)

zio/stable
Samuel Newman 2024-06-10 15:08:13 +01:00 committed by GitHub
parent 01b7a94a7e
commit 1317d881ed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 16 additions and 3 deletions

View File

@ -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) ?? []