defer search screen

This commit is contained in:
Samuel Newman
2025-07-07 18:05:06 +03:00
parent 1565e071c1
commit f80479744e
+9 -8
View File
@@ -1,6 +1,7 @@
import { import {
memo, memo,
useCallback, useCallback,
useDeferredValue,
useLayoutEffect, useLayoutEffect,
useMemo, useMemo,
useRef, useRef,
@@ -17,8 +18,7 @@ import {useLingui} from '@lingui/react'
import {useFocusEffect, useNavigation, useRoute} from '@react-navigation/native' import {useFocusEffect, useNavigation, useRoute} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import {HITSLOP_20} from '#/lib/constants' import {HITSLOP_10, HITSLOP_20} from '#/lib/constants'
import {HITSLOP_10} from '#/lib/constants'
import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback'
import {MagnifyingGlassIcon} from '#/lib/icons' import {MagnifyingGlassIcon} from '#/lib/icons'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
@@ -75,9 +75,10 @@ export function SearchScreenShell({
const queryClient = useQueryClient() const queryClient = useQueryClient()
// Query terms // Query terms
const [searchText, setSearchText] = useState<string>(queryParam) const [searchText, setSearchText] = useState(queryParam)
const deferredSearchText = useDeferredValue(searchText)
const {data: autocompleteData, isFetching: isAutocompleteFetching} = const {data: autocompleteData, isFetching: isAutocompleteFetching} =
useActorAutocompleteQuery(searchText, true) useActorAutocompleteQuery(deferredSearchText, true)
const [showAutocomplete, setShowAutocomplete] = useState(false) const [showAutocomplete, setShowAutocomplete] = useState(false)
@@ -207,8 +208,8 @@ export function SearchScreenShell({
}, [setShowAutocomplete, setSearchText, navigation, route.params, route.name]) }, [setShowAutocomplete, setSearchText, navigation, route.params, route.name])
const onSubmit = useCallback(() => { const onSubmit = useCallback(() => {
navigateToItem(searchText) navigateToItem(deferredSearchText)
}, [navigateToItem, searchText]) }, [navigateToItem, deferredSearchText])
const onAutocompleteResultPress = useCallback(() => { const onAutocompleteResultPress = useCallback(() => {
if (IS_WEB) { if (IS_WEB) {
@@ -397,11 +398,11 @@ export function SearchScreenShell({
display: showAutocomplete && !fixedParams ? 'flex' : 'none', display: showAutocomplete && !fixedParams ? 'flex' : 'none',
flex: 1, flex: 1,
}}> }}>
{searchText.length > 0 ? ( {deferredSearchText.length > 0 ? (
<AutocompleteResults <AutocompleteResults
isAutocompleteFetching={isAutocompleteFetching} isAutocompleteFetching={isAutocompleteFetching}
autocompleteData={autocompleteData} autocompleteData={autocompleteData}
searchText={searchText} searchText={deferredSearchText}
onSubmit={onSubmit} onSubmit={onSubmit}
onResultPress={onAutocompleteResultPress} onResultPress={onAutocompleteResultPress}
onProfileClick={handleProfileClick} onProfileClick={handleProfileClick}