Incorporate to_token to filters

This commit is contained in:
Eric Eastwood 2024-06-10 14:43:00 -05:00
parent 48eca7dbb7
commit 7aa0519589
2 changed files with 13 additions and 4 deletions

View file

@ -335,11 +335,8 @@ class SlidingSyncHandler:
# Apply filters
filtered_room_ids = room_id_set
if list_config.filters is not None:
# TODO: To be absolutely correct, this could also take into account
# from/to tokens but some of the streams don't support looking back
# in time (like global account_data).
filtered_room_ids = await self.filter_rooms(
sync_config.user, room_id_set, list_config.filters
sync_config.user, room_id_set, list_config.filters, to_token
)
# TODO: Apply sorts
sorted_room_ids = sorted(filtered_room_ids)
@ -618,9 +615,16 @@ class SlidingSyncHandler:
user: UserID,
room_id_set: AbstractSet[str],
filters: SlidingSyncConfig.SlidingSyncList.Filters,
to_token: StreamToken,
) -> AbstractSet[str]:
"""
Filter rooms based on the sync request.
Args:
user: User to filter rooms for
room_id_set: Set of room IDs to filter down
filters: Filters to apply
to_token: We filter based on the state of the room at this token
"""
user_id = user.to_string()

View file

@ -1140,6 +1140,7 @@ class FilterRoomsTestCase(HomeserverTestCase):
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
self.sliding_sync_handler = self.hs.get_sliding_sync_handler()
self.store = self.hs.get_datastores().main
self.event_sources = hs.get_event_sources()
def _create_dm_room(
self,
@ -1213,6 +1214,8 @@ class FilterRoomsTestCase(HomeserverTestCase):
invitee_tok=user2_tok,
)
after_rooms_token = self.event_sources.get_current_token()
# TODO: Better way to avoid the circular import? (see
# https://github.com/element-hq/synapse/pull/17187#discussion_r1619492779)
from synapse.handlers.sliding_sync import SlidingSyncConfig
@ -1225,6 +1228,7 @@ class FilterRoomsTestCase(HomeserverTestCase):
SlidingSyncConfig.SlidingSyncList.Filters(
is_dm=True,
),
after_rooms_token,
)
)
@ -1238,6 +1242,7 @@ class FilterRoomsTestCase(HomeserverTestCase):
SlidingSyncConfig.SlidingSyncList.Filters(
is_dm=False,
),
after_rooms_token,
)
)