diff --git a/apps/meteor/client/components/RoomAutoComplete/RoomAutoComplete.tsx b/apps/meteor/client/components/RoomAutoComplete/RoomAutoComplete.tsx index 03edf0be79d9..5054b4087d94 100644 --- a/apps/meteor/client/components/RoomAutoComplete/RoomAutoComplete.tsx +++ b/apps/meteor/client/components/RoomAutoComplete/RoomAutoComplete.tsx @@ -1,4 +1,5 @@ import { AutoComplete, Option, Box } from '@rocket.chat/fuselage'; +import { useDebouncedValue } from '@rocket.chat/fuselage-hooks'; import { useEndpoint } from '@rocket.chat/ui-contexts'; import { useQuery } from '@tanstack/react-query'; import type { ReactElement, ComponentProps } from 'react'; @@ -7,7 +8,7 @@ import React, { memo, useMemo, useState } from 'react'; import RoomAvatar from '../avatar/RoomAvatar'; import Avatar from './Avatar'; -const query = ( +const generateQuery = ( term = '', ): { selector: string; @@ -21,9 +22,10 @@ type RoomAutoCompleteProps = Omit, 'value /* @deprecated */ const RoomAutoComplete = (props: RoomAutoCompleteProps): ReactElement => { const [filter, setFilter] = useState(''); + const filterDebounced = useDebouncedValue(filter, 300); const autocomplete = useEndpoint('GET', '/v1/rooms.autocomplete.channelAndPrivate'); - const result = useQuery(['rooms.autocomplete.channelAndPrivate', filter], () => autocomplete(query(filter)), { + const result = useQuery(['rooms.autocomplete.channelAndPrivate', filterDebounced], () => autocomplete(generateQuery(filterDebounced)), { keepPreviousData: true, });