From 660dee94afdcb1059cb7074f1428fbfaa8c57465 Mon Sep 17 00:00:00 2001
From: Mark Haines <mark.haines@matrix.org>
Date: Fri, 4 Dec 2015 17:32:09 +0000
Subject: [PATCH] Only include the archived rooms if a include_leave flag in
 set in the filter

---
 synapse/api/filtering.py |  4 ++++
 synapse/handlers/sync.py | 12 ++++++------
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/synapse/api/filtering.py b/synapse/api/filtering.py
index 19f30c273c..bc03d6c287 100644
--- a/synapse/api/filtering.py
+++ b/synapse/api/filtering.py
@@ -143,6 +143,10 @@ class FilterCollection(object):
             self.filter_json.get("account_data", {})
         )
 
+        self.include_leave = self.filter_json.get("room", {}).get(
+            "include_leave", False
+        )
+
     def timeline_limit(self):
         return self.room_timeline_filter.limit()
 
diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py
index 943ce368ef..24c2b2fad6 100644
--- a/synapse/handlers/sync.py
+++ b/synapse/handlers/sync.py
@@ -186,14 +186,14 @@ class SyncHandler(BaseHandler):
             pagination_config=pagination_config.get_source_config("presence"),
             key=None
         )
+
+        membership_list = (Membership.INVITE, Membership.JOIN)
+        if sync_config.filter.include_leave:
+            membership_list += (Membership.LEAVE, Membership.BAN)
+
         room_list = yield self.store.get_rooms_for_user_where_membership_is(
             user_id=sync_config.user.to_string(),
-            membership_list=(
-                Membership.INVITE,
-                Membership.JOIN,
-                Membership.LEAVE,
-                Membership.BAN
-            )
+            membership_list=membership_list
         )
 
         account_data, account_data_by_room = (
-- 
GitLab