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

Configure Feed

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

at main 83 lines 2.3 kB view raw
1import { 2 type AppBskyActorDefs, 3 type AppBskyUnspeccedGetSuggestedOnboardingUsers, 4} from '@atproto/api' 5import {type QueryClient, useQuery} from '@tanstack/react-query' 6 7import {createBskyTopicsHeader} from '#/lib/api/feed/utils' 8import {getContentLanguages} from '#/state/preferences/languages' 9import {STALE} from '#/state/queries' 10import {usePreferencesQuery} from '#/state/queries/preferences' 11import {useAgent} from '#/state/session' 12 13export type QueryProps = { 14 category?: string | null 15 limit?: number 16 enabled?: boolean 17 overrideInterests: string[] 18} 19 20export const getSuggestedOnboardingUsersQueryKeyRoot = 21 'unspecced-suggested-onboarding-users' 22export const createGetSuggestedOnboardingUsersQueryKey = ( 23 props: QueryProps, 24) => [ 25 getSuggestedOnboardingUsersQueryKeyRoot, 26 props.category, 27 props.limit, 28 props.overrideInterests.join(','), 29] 30 31export function useGetSuggestedOnboardingUsersQuery(props: QueryProps) { 32 const agent = useAgent() 33 const {data: preferences} = usePreferencesQuery() 34 35 return useQuery({ 36 enabled: !!preferences && props.enabled !== false, 37 staleTime: STALE.MINUTES.THREE, 38 queryKey: createGetSuggestedOnboardingUsersQueryKey(props), 39 queryFn: async () => { 40 const contentLangs = getContentLanguages().join(',') 41 42 const overrideInterests = props.overrideInterests.join(',') 43 44 const {data} = await agent.app.bsky.unspecced.getSuggestedOnboardingUsers( 45 { 46 category: props.category ?? undefined, 47 limit: props.limit || 10, 48 }, 49 { 50 headers: { 51 ...createBskyTopicsHeader(overrideInterests), 52 'Accept-Language': contentLangs, 53 }, 54 }, 55 ) 56 57 return {...data, recId: data.recIdStr} 58 }, 59 }) 60} 61 62export function* findAllProfilesInQueryData( 63 queryClient: QueryClient, 64 did: string, 65): Generator<AppBskyActorDefs.ProfileView, void> { 66 const responses = 67 queryClient.getQueriesData<AppBskyUnspeccedGetSuggestedOnboardingUsers.OutputSchema>( 68 { 69 queryKey: [getSuggestedOnboardingUsersQueryKeyRoot], 70 }, 71 ) 72 for (const [_key, response] of responses) { 73 if (!response) { 74 continue 75 } 76 77 for (const actor of response.actors) { 78 if (actor.did === did) { 79 yield actor 80 } 81 } 82 } 83}