0
0
Fork 1
mirror of https://mau.dev/maunium/synapse.git synced 2024-11-16 06:51:46 +01:00

Rename key and values for m.room.history_visibility. Support 'invited' value

This commit is contained in:
Erik Johnston 2015-07-06 13:05:52 +01:00
parent c3e2600c67
commit fb47c3cfbe
4 changed files with 61 additions and 24 deletions

View file

@ -75,7 +75,7 @@ def prune_event(event):
elif event_type == EventTypes.Aliases: elif event_type == EventTypes.Aliases:
add_fields("aliases") add_fields("aliases")
elif event_type == EventTypes.RoomHistoryVisibility: elif event_type == EventTypes.RoomHistoryVisibility:
add_fields("visibility") add_fields("history_visibility")
allowed_fields = { allowed_fields = {
k: v k: v

View file

@ -239,7 +239,9 @@ class FederationHandler(BaseHandler):
return event return event
history = state.get((EventTypes.RoomHistoryVisibility, ''), None) history = state.get((EventTypes.RoomHistoryVisibility, ''), None)
if history and history.content.get("visibility", None) == "after_join": if history:
visibility = history.content.get("history_visibility", "shared")
if visibility in ["invited", "joined"]:
for ev in state.values(): for ev in state.values():
if ev.type != EventTypes.Member: if ev.type != EventTypes.Member:
continue continue
@ -251,7 +253,11 @@ class FederationHandler(BaseHandler):
if domain != server_name: if domain != server_name:
continue continue
if ev.membership == Membership.JOIN: memtype = ev.membership
if memtype == Membership.JOIN:
return event
elif memtype == Membership.INVITE:
if visibility == "invited":
return event return event
else: else:
return prune_event(event) return prune_event(event)

View file

@ -149,13 +149,29 @@ class MessageHandler(BaseHandler):
if event.type == EventTypes.RoomHistoryVisibility: if event.type == EventTypes.RoomHistoryVisibility:
return True return True
membership = state.get((EventTypes.Member, user_id), None) membership_ev = state.get((EventTypes.Member, user_id), None)
if membership and membership.membership == Membership.JOIN: if membership_ev:
membership = membership_ev.membership
else:
membership = Membership.LEAVE
if membership == Membership.JOIN:
return True return True
history = state.get((EventTypes.RoomHistoryVisibility, ''), None) history = state.get((EventTypes.RoomHistoryVisibility, ''), None)
if history and history.content.get("visibility", None) == "after_join": if history:
return False visibility = history.content.get("history_visibility", "shared")
else:
visibility = "shared"
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 return True

View file

@ -306,16 +306,31 @@ class SyncHandler(BaseHandler):
if event.type == EventTypes.RoomHistoryVisibility: if event.type == EventTypes.RoomHistoryVisibility:
return True return True
membership = state.get((EventTypes.Member, user_id), None) membership_ev = state.get((EventTypes.Member, user_id), None)
if membership and membership.membership == Membership.JOIN: if membership_ev:
membership = membership_ev.membership
else:
membership = Membership.LEAVE
if membership == Membership.JOIN:
return True return True
history = state.get((EventTypes.RoomHistoryVisibility, ''), None) history = state.get((EventTypes.RoomHistoryVisibility, ''), None)
if history and history.content.get("visibility", None) == "after_join": if history:
return False visibility = history.content.get("history_visibility", "shared")
else:
visibility = "shared"
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 return True
events_and_states = filter(allowed, events_and_states) events_and_states = filter(allowed, events_and_states)
defer.returnValue([ defer.returnValue([
ev ev