debounce refetching listconvos (#4455)
parent
01b7a94a7e
commit
1317d881ed
|
@ -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) ?? []
|
||||
|
|
Loading…
Reference in New Issue