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 | |
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')
-rw-r--r-- | src/state/cache/profile-shadow.ts | 2 | ||||
-rw-r--r-- | src/state/queries/messages/list-converations.ts | 33 |
2 files changed, 34 insertions, 1 deletions
diff --git a/src/state/cache/profile-shadow.ts b/src/state/cache/profile-shadow.ts index ca791bc9e..8d3e94042 100644 --- a/src/state/cache/profile-shadow.ts +++ b/src/state/cache/profile-shadow.ts @@ -6,6 +6,7 @@ import EventEmitter from 'eventemitter3' import {batchedUpdates} from '#/lib/batchedUpdates' import {findAllProfilesInQueryData as findAllProfilesInActorSearchQueryData} from '../queries/actor-search' import {findAllProfilesInQueryData as findAllProfilesInListMembersQueryData} from '../queries/list-members' +import {findAllProfilesInQueryData as findAllProfilesInListConvosQueryData} from '../queries/messages/list-converations' import {findAllProfilesInQueryData as findAllProfilesInMyBlockedAccountsQueryData} from '../queries/my-blocked-accounts' import {findAllProfilesInQueryData as findAllProfilesInMyMutedAccountsQueryData} from '../queries/my-muted-accounts' import {findAllProfilesInQueryData as findAllProfilesInPostLikedByQueryData} from '../queries/post-liked-by' @@ -105,4 +106,5 @@ function* findProfilesInCache( yield* findAllProfilesInProfileFollowsQueryData(queryClient, did) yield* findAllProfilesInSuggestedFollowsQueryData(queryClient, did) yield* findAllProfilesInActorSearchQueryData(queryClient, did) + yield* findAllProfilesInListConvosQueryData(queryClient, did) } 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 + } + } + } + } + } +} |