@@ -298,6 +298,8 @@ def __init__(self, hs: "HomeServer"):
298
298
expiry_ms = LAZY_LOADED_MEMBERS_CACHE_MAX_AGE ,
299
299
)
300
300
301
+ self .rooms_to_exclude = hs .config .server .rooms_to_exclude_from_sync
302
+
301
303
async def wait_for_sync_for_user (
302
304
self ,
303
305
requester : Requester ,
@@ -1607,13 +1609,15 @@ async def _generate_sync_entry_for_rooms(
1607
1609
ignored_users = await self .store .ignored_users (user_id )
1608
1610
if since_token :
1609
1611
room_changes = await self ._get_rooms_changed (
1610
- sync_result_builder , ignored_users
1612
+ sync_result_builder , ignored_users , self . rooms_to_exclude
1611
1613
)
1612
1614
tags_by_room = await self .store .get_updated_tags (
1613
1615
user_id , since_token .account_data_key
1614
1616
)
1615
1617
else :
1616
- room_changes = await self ._get_all_rooms (sync_result_builder , ignored_users )
1618
+ room_changes = await self ._get_all_rooms (
1619
+ sync_result_builder , ignored_users , self .rooms_to_exclude
1620
+ )
1617
1621
tags_by_room = await self .store .get_tags_for_user (user_id )
1618
1622
1619
1623
log_kv ({"rooms_changed" : len (room_changes .room_entries )})
@@ -1689,7 +1693,10 @@ async def _have_rooms_changed(
1689
1693
return False
1690
1694
1691
1695
async def _get_rooms_changed (
1692
- self , sync_result_builder : "SyncResultBuilder" , ignored_users : FrozenSet [str ]
1696
+ self ,
1697
+ sync_result_builder : "SyncResultBuilder" ,
1698
+ ignored_users : FrozenSet [str ],
1699
+ excluded_rooms : List [str ],
1693
1700
) -> _RoomChanges :
1694
1701
"""Determine the changes in rooms to report to the user.
1695
1702
@@ -1721,7 +1728,7 @@ async def _get_rooms_changed(
1721
1728
# _have_rooms_changed. We could keep the results in memory to avoid a
1722
1729
# second query, at the cost of more complicated source code.
1723
1730
membership_change_events = await self .store .get_membership_changes_for_user (
1724
- user_id , since_token .room_key , now_token .room_key
1731
+ user_id , since_token .room_key , now_token .room_key , excluded_rooms
1725
1732
)
1726
1733
1727
1734
mem_change_events_by_room_id : Dict [str , List [EventBase ]] = {}
@@ -1922,7 +1929,10 @@ async def _get_rooms_changed(
1922
1929
)
1923
1930
1924
1931
async def _get_all_rooms (
1925
- self , sync_result_builder : "SyncResultBuilder" , ignored_users : FrozenSet [str ]
1932
+ self ,
1933
+ sync_result_builder : "SyncResultBuilder" ,
1934
+ ignored_users : FrozenSet [str ],
1935
+ ignored_rooms : List [str ],
1926
1936
) -> _RoomChanges :
1927
1937
"""Returns entries for all rooms for the user.
1928
1938
@@ -1933,7 +1943,7 @@ async def _get_all_rooms(
1933
1943
Args:
1934
1944
sync_result_builder
1935
1945
ignored_users: Set of users ignored by user.
1936
-
1946
+ ignored_rooms: List of rooms to ignore.
1937
1947
"""
1938
1948
1939
1949
user_id = sync_result_builder .sync_config .user .to_string ()
@@ -1944,6 +1954,7 @@ async def _get_all_rooms(
1944
1954
room_list = await self .store .get_rooms_for_local_user_where_membership_is (
1945
1955
user_id = user_id ,
1946
1956
membership_list = Membership .LIST ,
1957
+ excluded_rooms = ignored_rooms ,
1947
1958
)
1948
1959
1949
1960
room_entries = []
0 commit comments