use keepPreviousData for query
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
import {AppBskyActorDefs, moderateProfile, ModerationOpts} from '@atproto/api'
|
import {AppBskyActorDefs, moderateProfile, ModerationOpts} from '@atproto/api'
|
||||||
import {useQuery, useQueryClient} from '@tanstack/react-query'
|
import {keepPreviousData, useQuery, useQueryClient} from '@tanstack/react-query'
|
||||||
|
|
||||||
import {isJustAMute} from '#/lib/moderation'
|
import {isJustAMute} from '#/lib/moderation'
|
||||||
import {logger} from '#/logger'
|
import {logger} from '#/logger'
|
||||||
@@ -16,7 +16,10 @@ const DEFAULT_MOD_OPTS = {
|
|||||||
const RQKEY_ROOT = 'actor-autocomplete'
|
const RQKEY_ROOT = 'actor-autocomplete'
|
||||||
export const RQKEY = (prefix: string) => [RQKEY_ROOT, prefix]
|
export const RQKEY = (prefix: string) => [RQKEY_ROOT, prefix]
|
||||||
|
|
||||||
export function useActorAutocompleteQuery(prefix: string) {
|
export function useActorAutocompleteQuery(
|
||||||
|
prefix: string,
|
||||||
|
maintainData?: boolean,
|
||||||
|
) {
|
||||||
const moderationOpts = useModerationOpts()
|
const moderationOpts = useModerationOpts()
|
||||||
const {getAgent} = useAgent()
|
const {getAgent} = useAgent()
|
||||||
|
|
||||||
@@ -40,6 +43,7 @@ export function useActorAutocompleteQuery(prefix: string) {
|
|||||||
},
|
},
|
||||||
[moderationOpts],
|
[moderationOpts],
|
||||||
),
|
),
|
||||||
|
placeholderData: maintainData ? keepPreviousData : undefined,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import {s} from '#/lib/styles'
|
|||||||
import {logger} from '#/logger'
|
import {logger} from '#/logger'
|
||||||
import {isNative, isWeb} from '#/platform/detection'
|
import {isNative, isWeb} from '#/platform/detection'
|
||||||
import {listenSoftReset} from '#/state/events'
|
import {listenSoftReset} from '#/state/events'
|
||||||
import {useActorAutocompleteFn} from '#/state/queries/actor-autocomplete'
|
import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete'
|
||||||
import {useActorSearch} from '#/state/queries/actor-search'
|
import {useActorSearch} from '#/state/queries/actor-search'
|
||||||
import {useModerationOpts} from '#/state/queries/preferences'
|
import {useModerationOpts} from '#/state/queries/preferences'
|
||||||
import {useSearchPostsQuery} from '#/state/queries/search-posts'
|
import {useSearchPostsQuery} from '#/state/queries/search-posts'
|
||||||
@@ -489,9 +489,10 @@ export function SearchScreen(
|
|||||||
const throttledInput = useThrottledValue(searchText, 300)
|
const throttledInput = useThrottledValue(searchText, 300)
|
||||||
|
|
||||||
// Autocomplete
|
// Autocomplete
|
||||||
const search = useActorAutocompleteFn()
|
const {data: autocompleteData} = useActorAutocompleteQuery(
|
||||||
const [autocompleteData, setAutocompleteData] =
|
throttledInput,
|
||||||
React.useState<AppBskyActorDefs.ProfileViewBasic[]>()
|
true,
|
||||||
|
)
|
||||||
|
|
||||||
const [inputIsFocused, setInputIsFocused] = React.useState(false)
|
const [inputIsFocused, setInputIsFocused] = React.useState(false)
|
||||||
const [searchHistory, setSearchHistory] = React.useState<string[]>([])
|
const [searchHistory, setSearchHistory] = React.useState<string[]>([])
|
||||||
@@ -517,22 +518,6 @@ export function SearchScreen(
|
|||||||
loadSearchHistory()
|
loadSearchHistory()
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
React.useEffect(() => {
|
|
||||||
let ignore = false
|
|
||||||
if (!throttledInput) {
|
|
||||||
setAutocompleteData(undefined)
|
|
||||||
} else {
|
|
||||||
search({query: throttledInput}).then(res => {
|
|
||||||
if (!ignore) {
|
|
||||||
setAutocompleteData(res)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return () => {
|
|
||||||
ignore = true
|
|
||||||
}
|
|
||||||
}, [search, throttledInput])
|
|
||||||
|
|
||||||
const onPressMenu = React.useCallback(() => {
|
const onPressMenu = React.useCallback(() => {
|
||||||
track('ViewHeader:MenuButtonClicked')
|
track('ViewHeader:MenuButtonClicked')
|
||||||
setDrawerOpen(true)
|
setDrawerOpen(true)
|
||||||
|
|||||||
Reference in New Issue
Block a user