diff options
Diffstat (limited to 'src/state/queries/messages')
-rw-r--r-- | src/state/queries/messages/list-converations.ts | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/state/queries/messages/list-converations.ts b/src/state/queries/messages/list-converations.ts index 368962417..f2c277068 100644 --- a/src/state/queries/messages/list-converations.ts +++ b/src/state/queries/messages/list-converations.ts @@ -1,6 +1,11 @@ import {useCallback, useMemo} from 'react' import {ChatBskyConvoDefs, ChatBskyConvoListConvos} from '@atproto/api' -import {useInfiniteQuery, useQueryClient} from '@tanstack/react-query' +import { + InfiniteData, + QueryClient, + useInfiniteQuery, + useQueryClient, +} from '@tanstack/react-query' import {useCurrentConvoId} from '#/state/messages/current-convo-id' import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const' @@ -140,3 +145,29 @@ function optimisticUpdate( })), } } + +export function* findAllProfilesInQueryData( + queryClient: QueryClient, + did: string, +) { + const queryDatas = queryClient.getQueriesData< + InfiniteData<ChatBskyConvoListConvos.OutputSchema> + >({ + queryKey: RQKEY, + }) + for (const [_queryKey, queryData] of queryDatas) { + if (!queryData?.pages) { + continue + } + + for (const page of queryData.pages) { + for (const convo of page.convos) { + for (const member of convo.members) { + if (member.did === did) { + yield member + } + } + } + } + } +} |