Bluesky app fork with some witchin' additions 馃挮
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at cb7e2ab976d9e2e8e2d13356b79bba7e6870a9fd 59 lines 1.7 kB view raw
1import {useMemo} from 'react' 2 3import {useInterestsDisplayNames} from '#/lib/interests' 4import {useActorSearch} from '#/state/queries/actor-search' 5import {useGetSuggestedUsersQuery} from '#/state/queries/trending/useGetSuggestedUsersQuery' 6 7/** 8 * Conditional hook, used in case a user is a non-english speaker, in which 9 * case we fall back to searching for users instead of our more curated set. 10 */ 11export function useSuggestedUsers({ 12 category = null, 13 search = false, 14}: { 15 category?: string | null 16 /** 17 * If true, we'll search for users using the translated value of `category`, 18 * based on the user's app language setting 19 */ 20 search?: boolean 21}) { 22 const interestsDisplayNames = useInterestsDisplayNames() 23 const curated = useGetSuggestedUsersQuery({ 24 enabled: !search, 25 category, 26 }) 27 const searched = useActorSearch({ 28 enabled: !!search, 29 // use user's app language translation for this value 30 query: category ? interestsDisplayNames[category] : '', 31 limit: 10, 32 }) 33 34 return useMemo(() => { 35 if (search) { 36 return { 37 // we're not paginating right now 38 data: searched?.data 39 ? { 40 actors: searched.data.pages.flatMap(p => p.actors) ?? [], 41 recId: undefined, 42 } 43 : undefined, 44 isLoading: searched.isLoading, 45 error: searched.error, 46 isRefetching: searched.isRefetching, 47 refetch: searched.refetch, 48 } 49 } else { 50 return { 51 data: curated.data, 52 isLoading: curated.isLoading, 53 error: curated.error, 54 isRefetching: curated.isRefetching, 55 refetch: curated.refetch, 56 } 57 } 58 }, [curated, searched, search]) 59}