From 110aa10e53665684304f1ed83070910649e1005a Mon Sep 17 00:00:00 2001 From: "H. Shay" Date: Fri, 4 Oct 2024 12:42:40 -0700 Subject: [PATCH] add a qurey for banned users --- synapse/storage/databases/main/roommember.py | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/synapse/storage/databases/main/roommember.py b/synapse/storage/databases/main/roommember.py index 0a62613d347..99a426fca9e 100644 --- a/synapse/storage/databases/main/roommember.py +++ b/synapse/storage/databases/main/roommember.py @@ -711,6 +711,27 @@ def get_users_server_still_shares_room_with_txn( return {row[0] for row in txn} + async def get_rooms_user_currently_banned_from( + self, user_id: str + ) -> FrozenSet[str]: + """Returns a set of room_ids the user is currently banned from. + + If a remote user only returns rooms this server is currently + participating in. + """ + room_ids = await self.db_pool.simple_select_onecol( + table="current_state_events", + keyvalues={ + "type": EventTypes.Member, + "membership": Membership.BAN, + "state_key": user_id, + }, + retcol="room_id", + desc="get_rooms_user_currently_banned_from", + ) + + return frozenset(room_ids) + @cached(max_entries=500000, iterable=True) async def get_rooms_for_user(self, user_id: str) -> FrozenSet[str]: """Returns a set of room_ids the user is currently joined to.