mirror of
https://github.com/element-hq/synapse.git
synced 2026-11-04 11:17:51 +00:00
Strip the user's real membership from announcement room timelines
This commit is contained in:
2 files changed
+17
No files matched your search
@@ -612,6 +612,14 @@ class SyncRestServlet(RestServlet):
|
||||
for key, event in state_dict.items()
|
||||
if key != (EventTypes.Member, user_id)
|
||||
}
|
||||
timeline_events = [
|
||||
filtered_event
|
||||
for filtered_event in timeline_events
|
||||
if not (
|
||||
filtered_event.event.type == EventTypes.Member
|
||||
and filtered_event.event.state_key == user_id
|
||||
)
|
||||
]
|
||||
|
||||
state_events = state_dict.values()
|
||||
|
||||
|
||||
@@ -2361,6 +2361,15 @@ class ServerAnnouncementsSyncTestCase(unittest.HomeserverTestCase):
|
||||
)
|
||||
self.assertEqual(self._timeline_ids(room), [event_id])
|
||||
|
||||
def test_initial_sync_after_leaving(self) -> None:
|
||||
"""A former member who left on their own gets a single, synthetic join
|
||||
on initial sync, even when their real leave is among the recent events.
|
||||
"""
|
||||
self.helper.leave(self.room_id, self.former, tok=self.former_tok)
|
||||
self._announce("hello")
|
||||
|
||||
self._assert_delivered(self._sync(self.former_tok), self.former)
|
||||
|
||||
def test_lazy_loaded_members(self) -> None:
|
||||
"""The synthetic join is sent when members are lazy-loaded."""
|
||||
self._announce("hello")
|
||||
|
||||
Reference in new issue
Block a user