summary refs log tree commit diff
path: root/synapse/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/handlers')
-rw-r--r--synapse/handlers/sync.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py
index d827c03ad1..94af490cc6 100644
--- a/synapse/handlers/sync.py
+++ b/synapse/handlers/sync.py
@@ -115,6 +115,7 @@ class JoinedSyncResult:
     ephemeral: List[JsonDict]
     account_data: List[JsonDict]
     unread_notifications: JsonDict
+    unread_thread_notifications: JsonDict
     summary: Optional[JsonDict]
     unread_count: int
 
@@ -1053,7 +1054,7 @@ class SyncHandler:
 
     async def unread_notifs_for_room_id(
         self, room_id: str, sync_config: SyncConfig
-    ) -> NotifCounts:
+    ) -> Tuple[NotifCounts, Dict[str, NotifCounts]]:
         with Measure(self.clock, "unread_notifs_for_room_id"):
 
             return await self.store.get_unread_event_push_actions_by_room_for_user(
@@ -2115,18 +2116,32 @@ class SyncHandler:
                     ephemeral=ephemeral,
                     account_data=account_data_events,
                     unread_notifications=unread_notifications,
+                    unread_thread_notifications={},
                     summary=summary,
                     unread_count=0,
                 )
 
                 if room_sync or always_include:
-                    notifs = await self.unread_notifs_for_room_id(room_id, sync_config)
+                    notifs, thread_notifs = await self.unread_notifs_for_room_id(
+                        room_id, sync_config
+                    )
 
+                    # Notifications for the main timeline.
                     unread_notifications["notification_count"] = notifs.notify_count
                     unread_notifications["highlight_count"] = notifs.highlight_count
 
                     room_sync.unread_count = notifs.unread_count
 
+                    # And add info for each thread.
+                    room_sync.unread_thread_notifications = {
+                        thread_id: {
+                            "notification_count": thread_notifs.notify_count,
+                            "highlight_count": thread_notifs.highlight_count,
+                        }
+                        for thread_id, thread_notifs in thread_notifs.items()
+                        if thread_id is not None
+                    }
+
                     sync_result_builder.joined.append(room_sync)
 
                 if batch.limited and since_token: