summary refs log tree commit diff
diff options
context:
space:
mode:
-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)