diff --git a/src/view/screens/Search/Search.tsx b/src/view/screens/Search/Search.tsx
index a6a975e6e8..19ff6b6066 100644
--- a/src/view/screens/Search/Search.tsx
+++ b/src/view/screens/Search/Search.tsx
@@ -23,6 +23,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 {useGate} from '#/lib/statsig/statsig'
import {augmentSearchQuery} from '#/lib/strings/helpers'
import {s} from '#/lib/styles'
import {logger} from '#/logger'
@@ -197,7 +198,7 @@ function SearchScreenPostResults({
sort,
}: {
query: string
- sort: 'top' | 'latest'
+ sort?: 'top' | 'latest'
}) {
const {_} = useLingui()
const {currentAccount} = useSession()
@@ -325,12 +326,16 @@ function SearchScreenUserResults({query}: {query: string}) {
const SECTIONS_LOGGEDOUT = ['PEOPLE'] as const
const SECTIONS_LOGGEDIN = ['TOP', 'LATEST', 'PEOPLE'] as const
+const SECTIONS_LOGGEDOUT_LEGACY = ['USERS'] as const
+const SECTIONS_LOGGEDIN_LEGACY = ['POSTS', 'USERS'] as const
function getSectionName(
i18n: I18n,
section:
| (typeof SECTIONS_LOGGEDIN)[number]
- | (typeof SECTIONS_LOGGEDOUT)[number],
+ | (typeof SECTIONS_LOGGEDOUT)[number]
+ | (typeof SECTIONS_LOGGEDIN_LEGACY)[number]
+ | (typeof SECTIONS_LOGGEDOUT_LEGACY)[number],
) {
switch (section) {
case 'TOP':
@@ -339,6 +344,10 @@ function getSectionName(
return i18n._(msg`Latest`)
case 'PEOPLE':
return i18n._(msg`People`)
+ case 'POSTS':
+ return i18n._(msg`Posts`)
+ case 'USERS':
+ return i18n._(msg`Users`)
}
}
@@ -356,6 +365,9 @@ export function SearchScreenInner({
const {isDesktop} = useWebMediaQueries()
const {i18n} = useLingui()
+ // New Search feature gate
+ const isNewSearch = useGate('new_search')
+
const onPageSelected = React.useCallback(
(index: number) => {
setMinimalShellMode(false)
@@ -364,7 +376,13 @@ export function SearchScreenInner({
[setDrawerSwipeDisabled, setMinimalShellMode],
)
- const sections = hasSession ? SECTIONS_LOGGEDIN : SECTIONS_LOGGEDOUT
+ const sections = React.useMemo(() => {
+ if (isNewSearch) {
+ return hasSession ? SECTIONS_LOGGEDIN : SECTIONS_LOGGEDOUT
+ } else {
+ return hasSession ? SECTIONS_LOGGEDIN_LEGACY : SECTIONS_LOGGEDOUT_LEGACY
+ }
+ }, [hasSession, isNewSearch])
const tabBarItems = React.useMemo(
() => sections.map(section => getSectionName(i18n, section)),
@@ -383,12 +401,20 @@ export function SearchScreenInner({
)}
initialPage={0}>
-
-
-
-
-
-
+ {isNewSearch ? (
+ <>
+
+
+
+
+
+
+ >
+ ) : (
+
+
+
+ )}