diff --git a/src/state/cache/profile-shadow.ts b/src/state/cache/profile-shadow.ts index eae0b8b90c..85e5b73396 100644 --- a/src/state/cache/profile-shadow.ts +++ b/src/state/cache/profile-shadow.ts @@ -11,6 +11,7 @@ import {findAllProfilesInQueryData as findAllProfilesInContactMatchesQueryData} import {findAllProfilesInQueryData as findAllProfilesInKnownFollowersQueryData} from '#/state/queries/known-followers' import {findAllProfilesInQueryData as findAllProfilesInListMembersQueryData} from '#/state/queries/list-members' import {findAllProfilesInQueryData as findAllProfilesInListConvosQueryData} from '#/state/queries/messages/list-conversations' +import {findAllProfilesInQueryData as findAllProfilesInMessagesQueryData} from '#/state/queries/messages/list-convo-members' import {findAllProfilesInQueryData as findAllProfilesInMyBlockedAccountsQueryData} from '#/state/queries/my-blocked-accounts' import {findAllProfilesInQueryData as findAllProfilesInMyMutedAccountsQueryData} from '#/state/queries/my-muted-accounts' import {findAllProfilesInQueryData as findAllProfilesInNotifsQueryData} from '#/state/queries/notifications/feed' @@ -264,4 +265,5 @@ function* findProfilesInCache( yield* findAllProfilesInActivitySubscriptionsQueryData(queryClient, did) yield* findAllProfilesInNotifsQueryData(queryClient, did) yield* findAllProfilesInContactMatchesQueryData(queryClient, did) + yield* findAllProfilesInMessagesQueryData(queryClient, did) } diff --git a/src/state/queries/messages/list-convo-members.ts b/src/state/queries/messages/list-convo-members.ts index 4363cbba93..d4e8c6e601 100644 --- a/src/state/queries/messages/list-convo-members.ts +++ b/src/state/queries/messages/list-convo-members.ts @@ -1,6 +1,6 @@ import {useEffect} from 'react' import {type ChatBskyActorDefs, ChatBskyConvoDefs} from '@atproto/api' -import {useQuery, useQueryClient} from '@tanstack/react-query' +import {type QueryClient, useQuery, useQueryClient} from '@tanstack/react-query' import {DM_SERVICE_HEADERS} from '#/lib/constants' import {useMessagesEventBus} from '#/state/messages/events' @@ -9,8 +9,9 @@ import {createQueryKey} from '#/state/queries/util' import {useAgent} from '#/state/session' import * as bsky from '#/types/bsky' +const RQKEY_ROOT = 'listConvoMembers' const listConvoMembersQueryKey = (convoId: string) => - createQueryKey('listConvoMembers', {convoId}) + createQueryKey(RQKEY_ROOT, {convoId}) // group chat size is 50, so should fetch the whole list in one go const LIMIT = 50 @@ -100,3 +101,22 @@ export function useListConvoMembersQuery({ placeholderData, }) } + +export function* findAllProfilesInQueryData( + queryClient: QueryClient, + did: string, +): Generator { + const queryDatas = queryClient.getQueriesData< + ChatBskyActorDefs.ProfileViewBasic[] + >({ + queryKey: [RQKEY_ROOT], + }) + for (const [_queryKey, queryData] of queryDatas) { + if (!queryData) continue + for (const member of queryData) { + if (member.did === did) { + yield member + } + } + } +}