diff --git a/src/lib/hooks/useNotificationHandler.ts b/src/lib/hooks/useNotificationHandler.ts index 2bc004ec5d..83bc300e8d 100644 --- a/src/lib/hooks/useNotificationHandler.ts +++ b/src/lib/hooks/useNotificationHandler.ts @@ -6,7 +6,6 @@ import {useQueryClient} from '@tanstack/react-query' import {logger} from '#/logger' import {track} from 'lib/analytics/analytics' import {useAccountSwitcher} from 'lib/hooks/useAccountSwitcher' -import {decrementBadgeCount} from 'lib/notifications/notifications' import {NavigationProp} from 'lib/routes/types' import {logEvent} from 'lib/statsig/statsig' import {isAndroid} from 'platform/detection' @@ -89,7 +88,6 @@ export function useNotificationsHandler() { if (!payload) return if (payload.reason === 'chat-message') { - decrementBadgeCount(1) if (payload.recipientDid !== currentAccount?.did && !storedPayload) { storedPayload = payload closeAllActiveElements() diff --git a/src/screens/Messages/List/ChatListItem.tsx b/src/screens/Messages/List/ChatListItem.tsx index fd2d46edda..7a1f084ee1 100644 --- a/src/screens/Messages/List/ChatListItem.tsx +++ b/src/screens/Messages/List/ChatListItem.tsx @@ -15,7 +15,6 @@ import {isNative} from '#/platform/detection' import {useProfileShadow} from '#/state/cache/profile-shadow' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useSession} from '#/state/session' -import {decrementBadgeCount} from 'lib/notifications/notifications' import {sanitizeDisplayName} from 'lib/strings/display-names' import {TimeElapsed} from '#/view/com/util/TimeElapsed' import {UserAvatar} from '#/view/com/util/UserAvatar' @@ -105,15 +104,10 @@ function ChatListItemReady({ }, []) const onPress = useCallback(async () => { - if (convo.unreadCount > 0) { - // We only increment the badge once per conversation, so even if there are multiple unreads - // we only want to decrement by one. - decrementBadgeCount(1) - } navigation.push('MessagesConversation', { conversation: convo.id, }) - }, [convo.id, convo.unreadCount, navigation]) + }, [convo.id, navigation]) return ( { queryClient.setQueryData(RQKEY, (old: ConvoListQueryData) => { - return optimisticUpdate(chatId, old, convo => ({ - ...convo, - unreadCount: 0, - })) + return optimisticUpdate(chatId, old, convo => { + // We only want to decrement the badge by one no matter the unread count, since we only increment once per + // sender regardless of message count + if (convo.unreadCount > 0) { + decrementBadgeCount(1) + } + + return { + ...convo, + unreadCount: 0, + } + }) }) }, [queryClient],