From 4fe5a869c32c696862308cb8ff4537f34f43f06a Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Wed, 8 May 2024 03:23:09 +0100 Subject: [🐴] Unread messages badge (#3901) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add badge * move stringify logic to hook * add mutation hooks * optimistic mark convo as read * don't count muted chats * Integrate new context * Integrate mark unread mutation * Remove unused edit --------- Co-authored-by: Eric Bailey --- src/state/queries/messages/conversation.ts | 36 +++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src/state/queries/messages/conversation.ts') diff --git a/src/state/queries/messages/conversation.ts b/src/state/queries/messages/conversation.ts index 9456861d2..c322e0c62 100644 --- a/src/state/queries/messages/conversation.ts +++ b/src/state/queries/messages/conversation.ts @@ -1,6 +1,7 @@ import {BskyAgent} from '@atproto-labs/api' -import {useQuery} from '@tanstack/react-query' +import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query' +import {RQKEY as ListConvosQueryKey} from '#/state/queries/messages/list-converations' import {useDmServiceUrlStorage} from '#/screens/Messages/Temp/useDmServiceUrlStorage' import {useHeaders} from './temp-headers' @@ -23,3 +24,36 @@ export function useConvoQuery(convoId: string) { }, }) } + +export function useMarkAsReadMutation() { + const headers = useHeaders() + const {serviceUrl} = useDmServiceUrlStorage() + const queryClient = useQueryClient() + + return useMutation({ + mutationFn: async ({ + convoId, + messageId, + }: { + convoId: string + messageId?: string + }) => { + const agent = new BskyAgent({service: serviceUrl}) + await agent.api.chat.bsky.convo.updateRead( + { + convoId, + messageId, + }, + { + encoding: 'application/json', + headers, + }, + ) + }, + onSuccess() { + queryClient.invalidateQueries({ + queryKey: ListConvosQueryKey, + }) + }, + }) +} -- cgit 1.4.1