mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
0
fork

Configure Feed

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

at offline-detection 69 lines 1.7 kB view raw
1import {AppBskyActorDefs, AppBskyGraphGetList} from '@atproto/api' 2import { 3 useInfiniteQuery, 4 InfiniteData, 5 QueryClient, 6 QueryKey, 7} from '@tanstack/react-query' 8 9import {getAgent} from '#/state/session' 10import {STALE} from '#/state/queries' 11 12const PAGE_SIZE = 30 13type RQPageParam = string | undefined 14 15export const RQKEY = (uri: string) => ['list-members', uri] 16 17export function useListMembersQuery(uri: string) { 18 return useInfiniteQuery< 19 AppBskyGraphGetList.OutputSchema, 20 Error, 21 InfiniteData<AppBskyGraphGetList.OutputSchema>, 22 QueryKey, 23 RQPageParam 24 >({ 25 staleTime: STALE.MINUTES.ONE, 26 queryKey: RQKEY(uri), 27 async queryFn({pageParam}: {pageParam: RQPageParam}) { 28 const res = await getAgent().app.bsky.graph.getList({ 29 list: uri, 30 limit: PAGE_SIZE, 31 cursor: pageParam, 32 }) 33 return res.data 34 }, 35 initialPageParam: undefined, 36 getNextPageParam: lastPage => lastPage.cursor, 37 }) 38} 39 40export function* findAllProfilesInQueryData( 41 queryClient: QueryClient, 42 did: string, 43): Generator<AppBskyActorDefs.ProfileView, void> { 44 const queryDatas = queryClient.getQueriesData< 45 InfiniteData<AppBskyGraphGetList.OutputSchema> 46 >({ 47 queryKey: ['list-members'], 48 }) 49 for (const [_queryKey, queryData] of queryDatas) { 50 if (!queryData) { 51 continue 52 } 53 for (const [_queryKey, queryData] of queryDatas) { 54 if (!queryData?.pages) { 55 continue 56 } 57 for (const page of queryData?.pages) { 58 if (page.list.creator.did === did) { 59 yield page.list.creator 60 } 61 for (const item of page.items) { 62 if (item.subject.did === did) { 63 yield item.subject 64 } 65 } 66 } 67 } 68 } 69}