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/messages/index.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/state/messages/index.tsx') diff --git a/src/state/messages/index.tsx b/src/state/messages/index.tsx index 7145e5d88..60538615a 100644 --- a/src/state/messages/index.tsx +++ b/src/state/messages/index.tsx @@ -6,6 +6,7 @@ import {useFocusEffect, useIsFocused} from '@react-navigation/native' import {Convo, ConvoParams, ConvoState} from '#/state/messages/convo' import {CurrentConvoIdProvider} from '#/state/messages/current-convo-id' import {MessagesEventBusProvider} from '#/state/messages/events' +import {useMarkAsReadMutation} from '#/state/queries/messages/conversation' import {useAgent} from '#/state/session' import {useDmServiceUrlStorage} from '#/screens/Messages/Temp/useDmServiceUrlStorage' @@ -37,15 +38,18 @@ export function ChatProvider({ }), ) const service = useSyncExternalStore(convo.subscribe, convo.getSnapshot) + const {mutate: markAsRead} = useMarkAsReadMutation() useFocusEffect( React.useCallback(() => { convo.resume() + markAsRead({convoId}) return () => { convo.background() + markAsRead({convoId}) } - }, [convo]), + }, [convo, convoId, markAsRead]), ) React.useEffect(() => { @@ -56,6 +60,8 @@ export function ChatProvider({ } else { convo.background() } + + markAsRead({convoId}) } } @@ -64,7 +70,7 @@ export function ChatProvider({ return () => { sub.remove() } - }, [convo, isScreenFocused]) + }, [convoId, convo, isScreenFocused, markAsRead]) return {children} } -- cgit 1.4.1