From a0bc11f4dda1847451d09159c9cafe0c88c13fda Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 2 Jun 2026 16:05:55 -0500 Subject: [PATCH] Revert "[ALG-96] Don't fall back to search for onboarding user suggestions (#10680)" This reverts commit 59765138ce0969411d2951ca2d22ffadf1ec21b1. --- .../StepSuggestedAccounts/index.tsx | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/screens/Onboarding/StepSuggestedAccounts/index.tsx b/src/screens/Onboarding/StepSuggestedAccounts/index.tsx index a9cc64396a..eaa68d9254 100644 --- a/src/screens/Onboarding/StepSuggestedAccounts/index.tsx +++ b/src/screens/Onboarding/StepSuggestedAccounts/index.tsx @@ -1,16 +1,18 @@ -import {useCallback, useEffect, useRef, useState} from 'react' +import {useCallback, useEffect, useMemo, useRef, useState} from 'react' import {View} from 'react-native' import {type ModerationOpts} from '@atproto/api' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {useMutation, useQueryClient} from '@tanstack/react-query' +import * as bcp47Match from 'bcp-47-match' import {wait} from '#/lib/async/wait' import {popularInterests, useInterestsDisplayNames} from '#/lib/interests' import {isBlockedOrBlocking, isMuted} from '#/lib/moderation/blocked-and-muted' import {logger} from '#/logger' import {updateProfileShadow} from '#/state/cache/profile-shadow' +import {useLanguagePrefs} from '#/state/preferences' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useAgent, useSession} from '#/state/session' import { @@ -51,6 +53,19 @@ export function StepSuggestedAccounts() { // so we can enable/disable the button without having to dig through the shadow cache const [followedUsers, setFollowedUsers] = useState([]) + /* + * Special language handling copied wholesale from the Explore screen + */ + const {contentLanguages} = useLanguagePrefs() + const useFullExperience = useMemo(() => { + if (contentLanguages.length === 0) return true + return bcp47Match.basicFilter('en', contentLanguages).length > 0 + }, [contentLanguages]) + const interestsDisplayNames = useInterestsDisplayNames() + const interests = Object.keys(interestsDisplayNames) + .sort(boostInterests(popularInterests)) + .sort(boostInterests(state.interestsStepResults.selectedInterests)) + const { data: suggestedUsers, isLoading, @@ -58,8 +73,8 @@ export function StepSuggestedAccounts() { isRefetching, refetch, } = useSuggestedOnboardingUsers({ - category: selectedInterest, - search: false, + category: selectedInterest || (useFullExperience ? null : interests[0]), + search: !useFullExperience, overrideInterests: state.interestsStepResults.selectedInterests, }) @@ -90,6 +105,7 @@ export function StepSuggestedAccounts() { ax.metric('suggestedUser:follow', { logContext: 'Onboarding', location: 'FollowAll', + recSource: !useFullExperience ? 'Search' : undefined, recId: suggestedUsers?.recId, position: i, suggestedDid: did, @@ -140,6 +156,7 @@ export function StepSuggestedAccounts() { seenProfilesRef.current.add(did) ax.metric('suggestedUser:seen', { logContext: 'Onboarding', + recSource: !useFullExperience ? 'Search' : undefined, recId: suggestedUsers?.recId, position, suggestedDid: did, @@ -147,7 +164,7 @@ export function StepSuggestedAccounts() { }) } }, - [ax, selectedInterest, suggestedUsers?.recId], + [ax, selectedInterest, suggestedUsers?.recId, useFullExperience], ) useEffect(() => { @@ -233,6 +250,7 @@ export function StepSuggestedAccounts() { position={index} category={selectedInterest} onSeen={onProfileSeen} + recSource={!useFullExperience ? 'Search' : undefined} recId={suggestedUsers.recId} /> ))}