Add a get_invites_for_user method to the storage to find out the rooms a user is invited to
2 files changed, 16 insertions, 6 deletions
diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py
index d9e55d8a58..380798b7ab 100644
--- a/synapse/handlers/sync.py
+++ b/synapse/handlers/sync.py
@@ -297,12 +297,8 @@ class SyncHandler(BaseHandler):
if room_sync:
joined.append(room_sync)
else:
- invites = yield self.store.get_rooms_for_user_where_membership_is(
- user_id=sync_config.user.to_string(),
- membership_list=[Membership.INVITE],
- )
- invite_events = yield self.store.get_events(
- [invite.event_id for invite in invites]
+ invite_events = yield self.store.get_invites_for_user(
+ sync_config.user.to_string()
)
for room_id in joined_room_ids:
diff --git a/synapse/storage/roommember.py b/synapse/storage/roommember.py
index 8c40d9a8a6..dd98dcfda8 100644
--- a/synapse/storage/roommember.py
+++ b/synapse/storage/roommember.py
@@ -110,6 +110,20 @@ class RoomMemberStore(SQLBaseStore):
membership=membership,
).addCallback(self._get_events)
+ def get_invites_for_user(self, user_id):
+ """ Get all the invite events for a user
+ Args:
+ user_id (str): The user ID.
+ Returns:
+ A deferred list of event objects.
+ """
+
+ return self.get_rooms_for_user_where_membership_is(
+ user_id, [Membership.INVITE]
+ ).addCallback(lambda invites: self._get_events([
+ invites.event_id for invite in invites
+ ]))
+
def get_rooms_for_user_where_membership_is(self, user_id, membership_list):
""" Get all the rooms for this user where the membership for this user
matches one in the membership list.
|