1 files changed, 20 insertions, 5 deletions
diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py
index 5078c4e45e..6cff6230c1 100644
--- a/synapse/handlers/sync.py
+++ b/synapse/handlers/sync.py
@@ -306,16 +306,31 @@ class SyncHandler(BaseHandler):
if event.type == EventTypes.RoomHistoryVisibility:
return True
- membership = state.get((EventTypes.Member, user_id), None)
- if membership and membership.membership == Membership.JOIN:
+ membership_ev = state.get((EventTypes.Member, user_id), None)
+ if membership_ev:
+ membership = membership_ev.membership
+ else:
+ membership = Membership.LEAVE
+
+ if membership == Membership.JOIN:
return True
history = state.get((EventTypes.RoomHistoryVisibility, ''), None)
- if history and history.content.get("visibility", None) == "after_join":
- return False
+ if history:
+ visibility = history.content.get("history_visibility", "shared")
+ else:
+ visibility = "shared"
- return True
+ if visibility == "public":
+ return True
+ elif visibility == "shared":
+ return True
+ elif visibility == "joined":
+ return membership == Membership.JOIN
+ elif visibility == "invited":
+ return membership == Membership.INVITE
+ return True
events_and_states = filter(allowed, events_and_states)
defer.returnValue([
ev
|