about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/hooks/useNotificationHandler.ts15
-rw-r--r--src/lib/notifications/notifications.ts8
2 files changed, 13 insertions, 10 deletions
diff --git a/src/lib/hooks/useNotificationHandler.ts b/src/lib/hooks/useNotificationHandler.ts
index 3f1cd439d..f3c4da7f6 100644
--- a/src/lib/hooks/useNotificationHandler.ts
+++ b/src/lib/hooks/useNotificationHandler.ts
@@ -46,8 +46,9 @@ const DEFAULT_HANDLER_OPTIONS = {
   shouldSetBadge: true,
 }
 
-// This needs to stay outside the hook to persist between account switches
+// These need to stay outside the hook to persist between account switches
 let storedPayload: NotificationPayload | undefined
+let prevDate = 0
 
 export function useNotificationsHandler() {
   const queryClient = useQueryClient()
@@ -58,9 +59,6 @@ export function useNotificationsHandler() {
   const {setShowLoggedOut} = useLoggedOutViewControls()
   const closeAllActiveElements = useCloseAllActiveElements()
 
-  // Safety to prevent double handling of the same notification
-  const prevDate = React.useRef(0)
-
   React.useEffect(() => {
     if (!isAndroid) return
 
@@ -169,11 +167,10 @@ export function useNotificationsHandler() {
           payload.reason === 'chat-message' &&
           payload.recipientDid === currentAccount?.did
         ) {
-          const isCurrentConvo = payload.convoId === currentConvoId
           return {
-            shouldShowAlert: !isCurrentConvo,
+            shouldShowAlert: payload.convoId !== currentConvoId,
             shouldPlaySound: false,
-            shouldSetBadge: !isCurrentConvo,
+            shouldSetBadge: false,
           }
         }
 
@@ -185,10 +182,10 @@ export function useNotificationsHandler() {
 
     const responseReceivedListener =
       Notifications.addNotificationResponseReceivedListener(e => {
-        if (e.notification.date === prevDate.current) {
+        if (e.notification.date === prevDate) {
           return
         }
-        prevDate.current = e.notification.date
+        prevDate = e.notification.date
 
         logger.debug(
           'Notifications: response received',
diff --git a/src/lib/notifications/notifications.ts b/src/lib/notifications/notifications.ts
index 6f28608f4..f9fbdb8bf 100644
--- a/src/lib/notifications/notifications.ts
+++ b/src/lib/notifications/notifications.ts
@@ -113,10 +113,16 @@ export function useRequestNotificationsPermission() {
   )
 }
 
-export async function decrementBadgeCount(by = 1) {
+export async function decrementBadgeCount(by: number | 'reset' = 1) {
   if (!isNative) return
 
   const currCount = await getBadgeCountAsync()
+
+  if (by === 'reset') {
+    await setBadgeCountAsync(0)
+    return
+  }
+
   let newCount = currCount - by
   if (newCount < 0) {
     newCount = 0