about summary refs log tree commit diff
path: root/src/state/queries/messages/list-converations.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/queries/messages/list-converations.ts')
-rw-r--r--src/state/queries/messages/list-converations.ts17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/state/queries/messages/list-converations.ts b/src/state/queries/messages/list-converations.ts
index f2c277068..4b4d50c49 100644
--- a/src/state/queries/messages/list-converations.ts
+++ b/src/state/queries/messages/list-converations.ts
@@ -10,6 +10,7 @@ import {
 import {useCurrentConvoId} from '#/state/messages/current-convo-id'
 import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const'
 import {useAgent} from '#/state/session'
+import {decrementBadgeCount} from 'lib/notifications/notifications'
 
 export const RQKEY = ['convo-list']
 type RQPageParam = string | undefined
@@ -116,10 +117,18 @@ export function useOnMarkAsRead() {
   return useCallback(
     (chatId: string) => {
       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],