diff options
Diffstat (limited to 'src/state')
-rw-r--r-- | src/state/queries/messages/conversation.ts | 12 | ||||
-rw-r--r-- | src/state/queries/messages/list-converations.ts | 17 |
2 files changed, 22 insertions, 7 deletions
diff --git a/src/state/queries/messages/conversation.ts b/src/state/queries/messages/conversation.ts index c322e0c62..551fbe98e 100644 --- a/src/state/queries/messages/conversation.ts +++ b/src/state/queries/messages/conversation.ts @@ -1,7 +1,7 @@ import {BskyAgent} from '@atproto-labs/api' -import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query' +import {useMutation, useQuery} from '@tanstack/react-query' -import {RQKEY as ListConvosQueryKey} from '#/state/queries/messages/list-converations' +import {useOnMarkAsRead} from '#/state/queries/messages/list-converations' import {useDmServiceUrlStorage} from '#/screens/Messages/Temp/useDmServiceUrlStorage' import {useHeaders} from './temp-headers' @@ -28,7 +28,7 @@ export function useConvoQuery(convoId: string) { export function useMarkAsReadMutation() { const headers = useHeaders() const {serviceUrl} = useDmServiceUrlStorage() - const queryClient = useQueryClient() + const onMarkAsRead = useOnMarkAsRead() return useMutation({ mutationFn: async ({ @@ -50,10 +50,8 @@ export function useMarkAsReadMutation() { }, ) }, - onSuccess() { - queryClient.invalidateQueries({ - queryKey: ListConvosQueryKey, - }) + onSuccess(_, {convoId}) { + onMarkAsRead(convoId) }, }) } diff --git a/src/state/queries/messages/list-converations.ts b/src/state/queries/messages/list-converations.ts index e66551ceb..32107c0cd 100644 --- a/src/state/queries/messages/list-converations.ts +++ b/src/state/queries/messages/list-converations.ts @@ -111,6 +111,23 @@ export function useOnCreateConvo() { }, [queryClient]) } +export function useOnMarkAsRead() { + const queryClient = useQueryClient() + + return useCallback( + (chatId: string) => { + queryClient.setQueryData(RQKEY, (old: ConvoListQueryData) => { + return optimisticUpdate(chatId, old, convo => ({ + ...convo, + unreadCount: 0, + })) + }) + queryClient.invalidateQueries({queryKey: RQKEY}) + }, + [queryClient], + ) +} + function optimisticUpdate( chatId: string, old: ConvoListQueryData, |