diff options
author | Eric Bailey <git@esb.lol> | 2025-04-08 17:08:09 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-08 17:08:09 -0500 |
commit | c8568e3004831e76b29e0f710805cb4f1cfc7576 (patch) | |
tree | b09a3d51996a9ed6924520d150786a4b16aeb98f /src/screens/Search/util/useSuggestedUsers.ts | |
parent | 09111ef272f04bbd6a1d7e43f072fdde06133669 (diff) | |
download | voidsky-c8568e3004831e76b29e0f710805cb4f1cfc7576.tar.zst |
[Explore] Reduced experience (#8160)
* Only show suggested users for non-english users * Fall back to searching for users for non-english speakers * Disable other queries if full experience is disabled * Bump package * If no content langs, use full exp
Diffstat (limited to 'src/screens/Search/util/useSuggestedUsers.ts')
-rw-r--r-- | src/screens/Search/util/useSuggestedUsers.ts | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/screens/Search/util/useSuggestedUsers.ts b/src/screens/Search/util/useSuggestedUsers.ts new file mode 100644 index 000000000..aa29dad8c --- /dev/null +++ b/src/screens/Search/util/useSuggestedUsers.ts @@ -0,0 +1,56 @@ +import {useMemo} from 'react' + +import {useActorSearchPaginated} from '#/state/queries/actor-search' +import {useGetSuggestedUsersQuery} from '#/state/queries/trending/useGetSuggestedUsersQuery' +import {useInterestsDisplayNames} from '#/screens/Onboarding/state' + +/** + * Conditional hook, used in case a user is a non-english speaker, in which + * case we fall back to searching for users instead of our more curated set. + */ +export function useSuggestedUsers({ + category = null, + search = false, +}: { + category?: string | null + /** + * If true, we'll search for users using the translated value of `category`, + * based on the user's "app language setting + */ + search?: boolean +}) { + const interestsDisplayNames = useInterestsDisplayNames() + const curated = useGetSuggestedUsersQuery({ + enabled: !search, + category, + }) + const searched = useActorSearchPaginated({ + enabled: !!search, + // use user's app language translation for this value + query: category ? interestsDisplayNames[category] : '', + limit: 10, + }) + + return useMemo(() => { + if (search) { + return { + // we're not paginating right now + data: searched?.data + ? { + actors: searched.data.pages.flatMap(p => p.actors) ?? [], + } + : undefined, + isLoading: searched.isLoading, + error: searched.error, + isRefetching: searched.isRefetching, + } + } else { + return { + data: curated.data, + isLoading: curated.isLoading, + error: curated.error, + isRefetching: curated.isRefetching, + } + } + }, [curated, searched, search]) +} |