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.ts44
1 files changed, 23 insertions, 21 deletions
diff --git a/src/state/queries/messages/list-converations.ts b/src/state/queries/messages/list-converations.ts
index 25ac9a16e..493ee0d19 100644
--- a/src/state/queries/messages/list-converations.ts
+++ b/src/state/queries/messages/list-converations.ts
@@ -46,27 +46,29 @@ export function useUnreadMessageCount() {
   })
   const moderationOpts = useModerationOpts()
 
-  const count =
-    convos.data?.pages
-      .flatMap(page => page.convos)
-      .filter(convo => convo.id !== currentConvoId)
-      .reduce((acc, convo) => {
-        const otherMember = convo.members.find(
-          member => member.did !== currentAccount?.did,
-        )
-
-        if (!otherMember || !moderationOpts) return acc
-
-        // TODO could shadow this outside this hook and get optimistic block state
-        const moderation = moderateProfile(otherMember, moderationOpts)
-        const shouldIgnore =
-          convo.muted ||
-          moderation.blocked ||
-          otherMember.did === 'missing.invalid'
-        const unreadCount = !shouldIgnore && convo.unreadCount > 0 ? 1 : 0
-
-        return acc + unreadCount
-      }, 0) ?? 0
+  const count = useMemo(() => {
+    return (
+      convos.data?.pages
+        .flatMap(page => page.convos)
+        .filter(convo => convo.id !== currentConvoId)
+        .reduce((acc, convo) => {
+          const otherMember = convo.members.find(
+            member => member.did !== currentAccount?.did,
+          )
+
+          if (!otherMember || !moderationOpts) return acc
+
+          const moderation = moderateProfile(otherMember, moderationOpts)
+          const shouldIgnore =
+            convo.muted ||
+            moderation.blocked ||
+            otherMember.did === 'missing.invalid'
+          const unreadCount = !shouldIgnore && convo.unreadCount > 0 ? 1 : 0
+
+          return acc + unreadCount
+        }, 0) ?? 0
+    )
+  }, [convos.data, currentAccount?.did, currentConvoId, moderationOpts])
 
   return useMemo(() => {
     return {