about summary refs log tree commit diff
path: root/src/view/shell/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/shell/desktop')
-rw-r--r--src/view/shell/desktop/Search.tsx92
1 files changed, 11 insertions, 81 deletions
diff --git a/src/view/shell/desktop/Search.tsx b/src/view/shell/desktop/Search.tsx
index de3ccad39..38da4e246 100644
--- a/src/view/shell/desktop/Search.tsx
+++ b/src/view/shell/desktop/Search.tsx
@@ -4,30 +4,19 @@ import {
   StyleSheet,
   TouchableOpacity,
   View,
-  ViewStyle,
+  type ViewStyle,
 } from 'react-native'
-import {
-  AppBskyActorDefs,
-  moderateProfile,
-  ModerationDecision,
-} from '@atproto/api'
 import {msg} from '@lingui/macro'
 import {useLingui} from '@lingui/react'
 import {StackActions, useNavigation} from '@react-navigation/native'
-import {useQueryClient} from '@tanstack/react-query'
 
 import {usePalette} from '#/lib/hooks/usePalette'
-import {makeProfileLink} from '#/lib/routes/links'
-import {NavigationProp} from '#/lib/routes/types'
-import {sanitizeDisplayName} from '#/lib/strings/display-names'
-import {sanitizeHandle} from '#/lib/strings/handles'
-import {s} from '#/lib/styles'
+import {type NavigationProp} from '#/lib/routes/types'
 import {useModerationOpts} from '#/state/preferences/moderation-opts'
 import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete'
-import {precacheProfile} from '#/state/queries/profile'
 import {Link} from '#/view/com/util/Link'
 import {Text} from '#/view/com/util/text/Text'
-import {UserAvatar} from '#/view/com/util/UserAvatar'
+import {SearchProfileCard} from '#/screens/Search/components/SearchProfileCard'
 import {atoms as a} from '#/alf'
 import {SearchInput} from '#/components/forms/SearchInput'
 
@@ -82,71 +71,6 @@ let SearchLinkCard = ({
 SearchLinkCard = React.memo(SearchLinkCard)
 export {SearchLinkCard}
 
-let SearchProfileCard = ({
-  profile,
-  moderation,
-  onPress: onPressInner,
-}: {
-  profile: AppBskyActorDefs.ProfileViewBasic
-  moderation: ModerationDecision
-  onPress: () => void
-}): React.ReactNode => {
-  const pal = usePalette('default')
-  const queryClient = useQueryClient()
-
-  const onPress = React.useCallback(() => {
-    precacheProfile(queryClient, profile)
-    onPressInner()
-  }, [queryClient, profile, onPressInner])
-
-  return (
-    <Link
-      testID={`searchAutoCompleteResult-${profile.handle}`}
-      href={makeProfileLink(profile)}
-      title={profile.handle}
-      asAnchor
-      anchorNoUnderline
-      onBeforePress={onPress}>
-      <View
-        style={[
-          pal.border,
-          {
-            flexDirection: 'row',
-            alignItems: 'center',
-            gap: 12,
-            paddingVertical: 8,
-            paddingHorizontal: 12,
-          },
-        ]}>
-        <UserAvatar
-          size={40}
-          avatar={profile.avatar}
-          moderation={moderation.ui('avatar')}
-          type={profile.associated?.labeler ? 'labeler' : 'user'}
-        />
-        <View style={{flex: 1}}>
-          <Text
-            emoji
-            type="lg"
-            style={[s.bold, pal.text, a.self_start]}
-            numberOfLines={1}
-            lineHeight={1.2}>
-            {sanitizeDisplayName(
-              profile.displayName || sanitizeHandle(profile.handle),
-              moderation.ui('displayName'),
-            )}
-          </Text>
-          <Text type="md" style={[pal.textLight]} numberOfLines={1}>
-            {sanitizeHandle(profile.handle, '@')}
-          </Text>
-        </View>
-      </View>
-    </Link>
-  )
-}
-SearchProfileCard = React.memo(SearchProfileCard)
-export {SearchProfileCard}
-
 export function DesktopSearch() {
   const {_} = useLingui()
   const pal = usePalette('default')
@@ -190,7 +114,13 @@ export function DesktopSearch() {
         onSubmitEditing={onSubmit}
       />
       {query !== '' && isActive && moderationOpts && (
-        <View style={[pal.view, pal.borderDark, styles.resultsContainer]}>
+        <View
+          style={[
+            pal.view,
+            pal.borderDark,
+            styles.resultsContainer,
+            a.overflow_hidden,
+          ]}>
           {isFetching && !autocompleteData?.length ? (
             <View style={{padding: 8}}>
               <ActivityIndicator />
@@ -210,7 +140,7 @@ export function DesktopSearch() {
                 <SearchProfileCard
                   key={item.did}
                   profile={item}
-                  moderation={moderateProfile(item, moderationOpts)}
+                  moderationOpts={moderationOpts}
                   onPress={onSearchProfileCardPress}
                 />
               ))}