diff options
-rw-r--r-- | changelog.d/4642.feature (renamed from changelog.d/4642.bugfix) | 0 | ||||
-rw-r--r-- | synapse/handlers/room.py | 16 |
2 files changed, 7 insertions, 9 deletions
diff --git a/changelog.d/4642.bugfix b/changelog.d/4642.feature index bfbf95bcbb..bfbf95bcbb 100644 --- a/changelog.d/4642.bugfix +++ b/changelog.d/4642.feature diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py index 2d24c115b6..0676e7f626 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py @@ -285,7 +285,6 @@ class RoomCreationHandler(BaseHandler): (EventTypes.RoomAvatar, ""), (EventTypes.Encryption, ""), (EventTypes.ServerACL, ""), - (EventTypes.Member, None), ) old_room_state_ids = yield self.store.get_filtered_current_state_ids( @@ -294,15 +293,9 @@ class RoomCreationHandler(BaseHandler): # map from event_id to BaseEvent old_room_state_events = yield self.store.get_events(old_room_state_ids.values()) - member_events = [] for k, old_event_id in iteritems(old_room_state_ids): old_event = old_room_state_events.get(old_event_id) if old_event: - # Do membership events later - if ("membership" in old_event.content): - member_events.append(old_event) - continue - initial_state[k] = old_event.content yield self._send_events_for_new_room( @@ -319,9 +312,14 @@ class RoomCreationHandler(BaseHandler): ) # Transfer membership events - for old_event in member_events: + old_room_member_state_ids = yield self.store.get_filtered_current_state_ids( + old_room_id, StateFilter.from_types([(EventTypes.Member, None)]), + ) + + # map from event_id to BaseEvent + old_room_member_state_events = yield self.store.get_events(old_room_member_state_ids.values()) + for k, old_event in iteritems(old_room_member_state_events): # Only transfer ban events - logger.info("Event type: " + str(old_event.content)) if ("membership" in old_event.content and old_event.content["membership"] == "ban"): yield self.room_member_handler.update_membership( |