Migrate all search to v2 and remove v1 (#11125)
This commit is contained in:
@@ -10,7 +10,6 @@ import {cleanError} from '#/lib/strings/errors'
|
||||
import {augmentSearchQuery} from '#/lib/strings/helpers'
|
||||
import {useActorSearch} from '#/state/queries/actor-search'
|
||||
import {usePopularFeedsSearch} from '#/state/queries/feed'
|
||||
import {useSearchPostsQuery} from '#/state/queries/search-posts'
|
||||
import {useSearchPostsV2Query} from '#/state/queries/search-posts-v2'
|
||||
import {useSession} from '#/state/session'
|
||||
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
|
||||
@@ -36,7 +35,6 @@ import type * as bsky from '#/types/bsky'
|
||||
|
||||
let SearchResults = ({
|
||||
query,
|
||||
queryWithParams,
|
||||
filters,
|
||||
hasFilters,
|
||||
activeTab,
|
||||
@@ -44,7 +42,6 @@ let SearchResults = ({
|
||||
headerHeight,
|
||||
}: {
|
||||
query: string
|
||||
queryWithParams: string
|
||||
filters: SearchFilters
|
||||
hasFilters: boolean
|
||||
activeTab: number
|
||||
@@ -75,7 +72,6 @@ let SearchResults = ({
|
||||
<SearchScreenPostResults
|
||||
hasFilters={hasFilters}
|
||||
query={query}
|
||||
queryWithParams={queryWithParams}
|
||||
filters={filters}
|
||||
sort="top"
|
||||
active={activePage === 0}
|
||||
@@ -88,7 +84,6 @@ let SearchResults = ({
|
||||
<SearchScreenPostResults
|
||||
hasFilters={hasFilters}
|
||||
query={query}
|
||||
queryWithParams={queryWithParams}
|
||||
filters={filters}
|
||||
sort="latest"
|
||||
active={activePage === 1}
|
||||
@@ -111,15 +106,7 @@ let SearchResults = ({
|
||||
title: string
|
||||
component: React.ReactNode
|
||||
}[]
|
||||
}, [
|
||||
l,
|
||||
query,
|
||||
queryWithParams,
|
||||
filters,
|
||||
hasFilters,
|
||||
hasPostFilters,
|
||||
activePage,
|
||||
])
|
||||
}, [l, query, filters, hasFilters, hasPostFilters, activePage])
|
||||
|
||||
// There may be fewer tabs after changing the search options.
|
||||
const selectedPage = activePage > sections.length - 1 ? 0 : activePage
|
||||
@@ -204,14 +191,9 @@ function NoResultsText({
|
||||
hasFilters?: boolean
|
||||
query: string
|
||||
}) {
|
||||
const ax = useAnalytics()
|
||||
const t = useTheme()
|
||||
const {t: l} = useLingui()
|
||||
|
||||
const searchV2Enabled = ax.features.enabled(ax.features.SearchV2Enable)
|
||||
const advancedSearchV2Enabled =
|
||||
searchV2Enabled && ax.features.enabled(ax.features.AdvancedSearchV2Enable)
|
||||
|
||||
return (
|
||||
<>
|
||||
<Text style={[a.text_lg, t.atoms.text_contrast_high]}>
|
||||
@@ -257,35 +239,19 @@ function NoResultsText({
|
||||
a.leading_snug,
|
||||
t.atoms.text_contrast_high,
|
||||
]}>
|
||||
{advancedSearchV2Enabled ? (
|
||||
<Trans context="english-only-resource">
|
||||
Learn more about{' '}
|
||||
<InlineLinkText
|
||||
label={l({
|
||||
message: 'Read about how to use advanced search filters',
|
||||
context: 'english-only-resource',
|
||||
})}
|
||||
to={urls.website.blog.searchTipsAndTricks}
|
||||
style={[a.text_md, a.leading_snug]}>
|
||||
how to use advanced search
|
||||
</InlineLinkText>
|
||||
.
|
||||
</Trans>
|
||||
) : (
|
||||
<Trans context="english-only-resource">
|
||||
Learn more about{' '}
|
||||
<InlineLinkText
|
||||
label={l({
|
||||
message: 'Read about how to use search filters',
|
||||
context: 'english-only-resource',
|
||||
})}
|
||||
to={urls.website.blog.searchTipsAndTricks}
|
||||
style={[a.text_md, a.leading_snug]}>
|
||||
how to use search filters
|
||||
</InlineLinkText>
|
||||
.
|
||||
</Trans>
|
||||
)}
|
||||
<Trans context="english-only-resource">
|
||||
Learn more about{' '}
|
||||
<InlineLinkText
|
||||
label={l({
|
||||
message: 'Read about how to use advanced search filters',
|
||||
context: 'english-only-resource',
|
||||
})}
|
||||
to={urls.website.blog.searchTipsAndTricks}
|
||||
style={[a.text_md, a.leading_snug]}>
|
||||
how to use advanced search
|
||||
</InlineLinkText>
|
||||
.
|
||||
</Trans>
|
||||
</Text>
|
||||
</>
|
||||
)
|
||||
@@ -305,14 +271,12 @@ type SearchResultSlice =
|
||||
let SearchScreenPostResults = ({
|
||||
hasFilters = false,
|
||||
query,
|
||||
queryWithParams,
|
||||
filters,
|
||||
sort,
|
||||
active,
|
||||
}: {
|
||||
hasFilters: boolean
|
||||
query: string
|
||||
queryWithParams: string
|
||||
filters?: SearchFilters
|
||||
sort?: 'top' | 'latest'
|
||||
active: boolean
|
||||
@@ -323,30 +287,15 @@ let SearchScreenPostResults = ({
|
||||
const [isPTR, setIsPTR] = useState(false)
|
||||
const trackPostView = usePostViewTracking('SearchResults')
|
||||
|
||||
const searchV2Enabled = ax.features.enabled(ax.features.SearchV2Enable)
|
||||
|
||||
const augmentedV2Query = useMemo(() => {
|
||||
return augmentSearchQuery(query || '')
|
||||
}, [query])
|
||||
const augmentedV1Query = useMemo(() => {
|
||||
return augmentSearchQuery(queryWithParams || '')
|
||||
}, [queryWithParams])
|
||||
|
||||
/*
|
||||
* Both hooks are called to keep hook order stable; `enabled` ensures only the
|
||||
* gated one actually fetches. V2 sends structured `filters` as separate
|
||||
* params, V1 keeps the existing single-`q` behavior.
|
||||
*/
|
||||
const v1 = useSearchPostsQuery({
|
||||
query: augmentedV1Query,
|
||||
sort,
|
||||
enabled: active && !searchV2Enabled,
|
||||
})
|
||||
const v2 = useSearchPostsV2Query({
|
||||
query: augmentedV2Query,
|
||||
filters,
|
||||
sort,
|
||||
enabled: active && searchV2Enabled,
|
||||
enabled: active,
|
||||
})
|
||||
const {
|
||||
isFetched,
|
||||
@@ -357,7 +306,7 @@ let SearchScreenPostResults = ({
|
||||
fetchNextPage,
|
||||
isFetchingNextPage,
|
||||
hasNextPage,
|
||||
} = searchV2Enabled ? v2 : v1
|
||||
} = v2
|
||||
|
||||
const t = useTheme()
|
||||
const onPullToRefresh = useCallback(async () => {
|
||||
|
||||
Reference in New Issue
Block a user