defer search screen
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user