diff options
author | Eric Bailey <git@esb.lol> | 2024-05-14 20:07:53 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-14 20:07:53 -0500 |
commit | 6efe90a5f5c213a02da9f906fc1f098db113d71d (patch) | |
tree | 1607fb0274975cb08b26557b2edca05b45983f69 /src/state/queries/messages | |
parent | d390db0fa23d4e377e7351a869e11453a540c4fa (diff) | |
download | voidsky-6efe90a5f5c213a02da9f906fc1f098db113d71d.tar.zst |
[🐴] Block states, read only (#4022)
* Refactor ChatListItem for mod state * Refactor Conversation Header for mod state * Invalidate query for list when blocking/unblocking * Remove unused prop, restore border * Add mutations, hook up profile shadow to list query, use shadow-aware query for convo (#4024)
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 + } + } + } + } + } +} |