summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <paul@matrix.org>2014-08-15 17:12:07 +0100
committerPaul "LeoNerd" Evans <paul@matrix.org>2014-08-15 17:12:07 +0100
commit9c41f635a9a89a4623bb05fffbd0e12808733af8 (patch)
tree7983be3fac9ac13557e62a051ddb4146badd4b9e /synapse
parentAlso include users' presence when responding to /rooms/:room_id/members/list (diff)
downloadsynapse-9c41f635a9a89a4623bb05fffbd0e12808733af8.tar.xz
When starting to poll for presence, also include members of all shared rooms
Diffstat (limited to 'synapse')
-rw-r--r--synapse/handlers/presence.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py
index 351ff305dc..049891eaf8 100644
--- a/synapse/handlers/presence.py
+++ b/synapse/handlers/presence.py
@@ -380,14 +380,23 @@ class PresenceHandler(BaseHandler):
         logger.debug("Start polling for presence from %s", user)
 
         if target_user:
-            target_users = [target_user]
+            target_users = set(target_user)
         else:
             presence = yield self.store.get_presence_list(
                 user.localpart, accepted=True
             )
-            target_users = [
+            target_users = set([
                 self.hs.parse_userid(x["observed_user_id"]) for x in presence
-            ]
+            ])
+
+            # Also include people in all my rooms
+
+            rm_handler = self.homeserver.get_handlers().room_member_handler
+            room_ids = yield rm_handler.get_rooms_for_user(user)
+
+            for room_id in room_ids:
+                for member in (yield rm_handler.get_room_members(room_id)):
+                    target_users.add(member)
 
         if state is None:
             state = yield self.store.get_presence_state(user.localpart)