Skip to content

Commit 0570a65

Browse files
authored
Merge pull request #59659 from callstack-internal/fix/59262-search-input
Enhance SearchAutocompleteInput with the debounced search
2 parents 7a1b254 + 8743ed9 commit 0570a65

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

src/components/Search/SearchAutocompleteInput.tsx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* eslint-disable rulesdir/no-acc-spread-in-reduce */
2+
import lodashDebounce from 'lodash/debounce';
23
import type {ForwardedRef, ReactNode, RefObject} from 'react';
3-
import React, {forwardRef, useCallback, useEffect, useLayoutEffect, useMemo} from 'react';
4+
import React, {forwardRef, useCallback, useEffect, useLayoutEffect, useMemo, useState} from 'react';
45
import {View} from 'react-native';
56
import type {StyleProp, TextInputProps, ViewStyle} from 'react-native';
67
import {useOnyx} from 'react-native-onyx';
@@ -134,6 +135,18 @@ function SearchAutocompleteInput(
134135
return focusedSharedValue.get() ? wrapperFocusedStyle : wrapperStyle ?? {};
135136
});
136137

138+
const [localValue, setLocalValue] = useState(value);
139+
140+
const debouncedOnSearchQueryChange = useMemo(() => lodashDebounce(onSearchQueryChange, CONST.TIMING.USE_DEBOUNCED_STATE_DELAY), [onSearchQueryChange]);
141+
142+
const handleChangeText = useCallback(
143+
(text: string) => {
144+
setLocalValue(text);
145+
debouncedOnSearchQueryChange(text);
146+
},
147+
[debouncedOnSearchQueryChange],
148+
);
149+
137150
useEffect(() => {
138151
runOnLiveMarkdownRuntime(() => {
139152
'worklet';
@@ -193,8 +206,8 @@ function SearchAutocompleteInput(
193206
>
194207
<TextInput
195208
testID="search-autocomplete-text-input"
196-
value={value}
197-
onChangeText={onSearchQueryChange}
209+
value={localValue}
210+
onChangeText={handleChangeText}
198211
autoFocus={autoFocus}
199212
shouldDelayFocus={shouldDelayFocus}
200213
caretHidden={caretHidden}

0 commit comments

Comments
 (0)