onPress dismiss attempt
This commit is contained in:
@@ -495,6 +495,7 @@ export function SearchScreen(
|
|||||||
)
|
)
|
||||||
|
|
||||||
const [inputIsFocused, setInputIsFocused] = React.useState(false)
|
const [inputIsFocused, setInputIsFocused] = React.useState(false)
|
||||||
|
const [showAutocomplete, setShowAutocomplete] = React.useState(false)
|
||||||
const [searchHistory, setSearchHistory] = React.useState<string[]>([])
|
const [searchHistory, setSearchHistory] = React.useState<string[]>([])
|
||||||
|
|
||||||
useFocusEffect(
|
useFocusEffect(
|
||||||
@@ -552,6 +553,10 @@ export function SearchScreen(
|
|||||||
const onChangeText = React.useCallback(async (text: string) => {
|
const onChangeText = React.useCallback(async (text: string) => {
|
||||||
scrollToTopWeb()
|
scrollToTopWeb()
|
||||||
setSearchText(text)
|
setSearchText(text)
|
||||||
|
|
||||||
|
if (text.length > 0) {
|
||||||
|
setShowAutocomplete(true)
|
||||||
|
}
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
const updateSearchHistory = React.useCallback(
|
const updateSearchHistory = React.useCallback(
|
||||||
@@ -711,7 +716,7 @@ export function SearchScreen(
|
|||||||
)}
|
)}
|
||||||
</CenteredView>
|
</CenteredView>
|
||||||
|
|
||||||
{inputIsFocused && searchText.length > 0 ? (
|
{showAutocomplete && searchText.length > 0 ? (
|
||||||
<>
|
<>
|
||||||
{!autocompleteData || !moderationOpts ? (
|
{!autocompleteData || !moderationOpts ? (
|
||||||
<Loader />
|
<Loader />
|
||||||
@@ -745,6 +750,7 @@ export function SearchScreen(
|
|||||||
key={item.did}
|
key={item.did}
|
||||||
profile={item}
|
profile={item}
|
||||||
moderation={moderateProfile(item, moderationOpts)}
|
moderation={moderateProfile(item, moderationOpts)}
|
||||||
|
onPress={() => setShowAutocomplete(false)}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
|
||||||
|
|||||||
@@ -1,33 +1,33 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
import {
|
import {
|
||||||
ViewStyle,
|
|
||||||
TextInput,
|
|
||||||
View,
|
|
||||||
StyleSheet,
|
|
||||||
TouchableOpacity,
|
|
||||||
ActivityIndicator,
|
ActivityIndicator,
|
||||||
|
StyleSheet,
|
||||||
|
TextInput,
|
||||||
|
TouchableOpacity,
|
||||||
|
View,
|
||||||
|
ViewStyle,
|
||||||
} from 'react-native'
|
} from 'react-native'
|
||||||
import {useNavigation, StackActions} from '@react-navigation/native'
|
|
||||||
import {
|
import {
|
||||||
AppBskyActorDefs,
|
AppBskyActorDefs,
|
||||||
moderateProfile,
|
moderateProfile,
|
||||||
ModerationDecision,
|
ModerationDecision,
|
||||||
} from '@atproto/api'
|
} from '@atproto/api'
|
||||||
import {Trans, msg} from '@lingui/macro'
|
import {msg, Trans} from '@lingui/macro'
|
||||||
import {useLingui} from '@lingui/react'
|
import {useLingui} from '@lingui/react'
|
||||||
|
import {StackActions, useNavigation} from '@react-navigation/native'
|
||||||
|
|
||||||
import {s} from '#/lib/styles'
|
import {makeProfileLink} from '#/lib/routes/links'
|
||||||
import {sanitizeDisplayName} from '#/lib/strings/display-names'
|
import {sanitizeDisplayName} from '#/lib/strings/display-names'
|
||||||
import {sanitizeHandle} from '#/lib/strings/handles'
|
import {sanitizeHandle} from '#/lib/strings/handles'
|
||||||
import {makeProfileLink} from '#/lib/routes/links'
|
import {s} from '#/lib/styles'
|
||||||
import {Link} from '#/view/com/util/Link'
|
import {useActorAutocompleteFn} from '#/state/queries/actor-autocomplete'
|
||||||
|
import {useModerationOpts} from '#/state/queries/preferences'
|
||||||
import {usePalette} from 'lib/hooks/usePalette'
|
import {usePalette} from 'lib/hooks/usePalette'
|
||||||
import {MagnifyingGlassIcon2} from 'lib/icons'
|
import {MagnifyingGlassIcon2} from 'lib/icons'
|
||||||
import {NavigationProp} from 'lib/routes/types'
|
import {NavigationProp} from 'lib/routes/types'
|
||||||
import {Text} from 'view/com/util/text/Text'
|
import {Link} from '#/view/com/util/Link'
|
||||||
import {UserAvatar} from '#/view/com/util/UserAvatar'
|
import {UserAvatar} from '#/view/com/util/UserAvatar'
|
||||||
import {useActorAutocompleteFn} from '#/state/queries/actor-autocomplete'
|
import {Text} from 'view/com/util/text/Text'
|
||||||
import {useModerationOpts} from '#/state/queries/preferences'
|
|
||||||
|
|
||||||
export const MATCH_HANDLE =
|
export const MATCH_HANDLE =
|
||||||
/@?([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*(?:\.[a-zA-Z]{2,}))/
|
/@?([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*(?:\.[a-zA-Z]{2,}))/
|
||||||
@@ -84,9 +84,11 @@ export function SearchLinkCard({
|
|||||||
export function SearchProfileCard({
|
export function SearchProfileCard({
|
||||||
profile,
|
profile,
|
||||||
moderation,
|
moderation,
|
||||||
|
onPress,
|
||||||
}: {
|
}: {
|
||||||
profile: AppBskyActorDefs.ProfileViewBasic
|
profile: AppBskyActorDefs.ProfileViewBasic
|
||||||
moderation: ModerationDecision
|
moderation: ModerationDecision
|
||||||
|
onPress: () => void
|
||||||
}) {
|
}) {
|
||||||
const pal = usePalette('default')
|
const pal = usePalette('default')
|
||||||
|
|
||||||
@@ -96,7 +98,8 @@ export function SearchProfileCard({
|
|||||||
href={makeProfileLink(profile)}
|
href={makeProfileLink(profile)}
|
||||||
title={profile.handle}
|
title={profile.handle}
|
||||||
asAnchor
|
asAnchor
|
||||||
anchorNoUnderline>
|
anchorNoUnderline
|
||||||
|
onBeforePress={onPress}>
|
||||||
<View
|
<View
|
||||||
style={[
|
style={[
|
||||||
pal.border,
|
pal.border,
|
||||||
|
|||||||
Reference in New Issue
Block a user