about summary refs log tree commit diff
path: root/src/view
diff options
context:
space:
mode:
Diffstat (limited to 'src/view')
-rw-r--r--src/view/screens/Search/Search.tsx84
1 files changed, 69 insertions, 15 deletions
diff --git a/src/view/screens/Search/Search.tsx b/src/view/screens/Search/Search.tsx
index c0f4cf195..fe7a52234 100644
--- a/src/view/screens/Search/Search.tsx
+++ b/src/view/screens/Search/Search.tsx
@@ -22,6 +22,7 @@ import {HITSLOP_10} from '#/lib/constants'
 import {usePalette} from '#/lib/hooks/usePalette'
 import {MagnifyingGlassIcon} from '#/lib/icons'
 import {NavigationProp} from '#/lib/routes/types'
+import {useNewSearchGate} from '#/lib/statsig/gates'
 import {augmentSearchQuery} from '#/lib/strings/helpers'
 import {s} from '#/lib/styles'
 import {logger} from '#/logger'
@@ -191,7 +192,13 @@ type SearchResultSlice =
       key: string
     }
 
-function SearchScreenPostResults({query}: {query: string}) {
+function SearchScreenPostResults({
+  query,
+  sort,
+}: {
+  query: string
+  sort?: 'top' | 'latest'
+}) {
   const {_} = useLingui()
   const {currentAccount} = useSession()
   const [isPTR, setIsPTR] = React.useState(false)
@@ -209,7 +216,7 @@ function SearchScreenPostResults({query}: {query: string}) {
     fetchNextPage,
     isFetchingNextPage,
     hasNextPage,
-  } = useSearchPostsQuery({query: augmentedQuery})
+  } = useSearchPostsQuery({query: augmentedQuery, sort})
 
   const onPullToRefresh = React.useCallback(async () => {
     setIsPTR(true)
@@ -316,8 +323,6 @@ function SearchScreenUserResults({query}: {query: string}) {
   )
 }
 
-const SECTIONS_LOGGEDOUT = ['Users']
-const SECTIONS_LOGGEDIN = ['Posts', 'Users']
 export function SearchScreenInner({
   query,
   primarySearch,
@@ -330,6 +335,9 @@ export function SearchScreenInner({
   const setDrawerSwipeDisabled = useSetDrawerSwipeDisabled()
   const {hasSession} = useSession()
   const {isDesktop} = useWebMediaQueries()
+  const {_} = useLingui()
+
+  const isNewSearch = useNewSearchGate()
 
   const onPageSelected = React.useCallback(
     (index: number) => {
@@ -339,6 +347,55 @@ export function SearchScreenInner({
     [setDrawerSwipeDisabled, setMinimalShellMode],
   )
 
+  const sections = React.useMemo(() => {
+    if (!query) return []
+    if (isNewSearch) {
+      if (hasSession) {
+        return [
+          {
+            title: _(msg`Top`),
+            component: <SearchScreenPostResults query={query} sort="top" />,
+          },
+          {
+            title: _(msg`Latest`),
+            component: <SearchScreenPostResults query={query} sort="latest" />,
+          },
+          {
+            title: _(msg`People`),
+            component: <SearchScreenUserResults query={query} />,
+          },
+        ]
+      } else {
+        return [
+          {
+            title: _(msg`People`),
+            component: <SearchScreenUserResults query={query} />,
+          },
+        ]
+      }
+    } else {
+      if (hasSession) {
+        return [
+          {
+            title: _(msg`Posts`),
+            component: <SearchScreenPostResults query={query} />,
+          },
+          {
+            title: _(msg`Users`),
+            component: <SearchScreenUserResults query={query} />,
+          },
+        ]
+      } else {
+        return [
+          {
+            title: _(msg`Users`),
+            component: <SearchScreenUserResults query={query} />,
+          },
+        ]
+      }
+    }
+  }, [hasSession, isNewSearch, _, query])
+
   if (hasSession) {
     return query ? (
       <Pager
@@ -347,16 +404,13 @@ export function SearchScreenInner({
           <CenteredView
             sideBorders
             style={[pal.border, pal.view, styles.tabBarContainer]}>
-            <TabBar items={SECTIONS_LOGGEDIN} {...props} />
+            <TabBar items={sections.map(section => section.title)} {...props} />
           </CenteredView>
         )}
         initialPage={0}>
-        <View>
-          <SearchScreenPostResults query={query} />
-        </View>
-        <View>
-          <SearchScreenUserResults query={query} />
-        </View>
+        {sections.map((section, i) => (
+          <View key={i}>{section.component}</View>
+        ))}
       </Pager>
     ) : (
       <View>
@@ -389,13 +443,13 @@ export function SearchScreenInner({
         <CenteredView
           sideBorders
           style={[pal.border, pal.view, styles.tabBarContainer]}>
-          <TabBar items={SECTIONS_LOGGEDOUT} {...props} />
+          <TabBar items={sections.map(section => section.title)} {...props} />
         </CenteredView>
       )}
       initialPage={0}>
-      <View>
-        <SearchScreenUserResults query={query} />
-      </View>
+      {sections.map((section, i) => (
+        <View key={i}>{section.component}</View>
+      ))}
     </Pager>
   ) : (
     <CenteredView sideBorders style={pal.border}>