diff options
author | Patrick Cloke <clokep@users.noreply.github.com> | 2023-10-27 12:50:50 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-27 12:50:50 -0400 |
commit | 2bf934140625e91e1e27ffc9f717f6f2d277b2b9 (patch) | |
tree | 3f305b0eb8728414fe4603f4575bea30ae25be67 /synapse/storage | |
parent | Reduce amount of caches POSITIONS we send (#16561) (diff) | |
download | synapse-2bf934140625e91e1e27ffc9f717f6f2d277b2b9.tar.xz |
Ensure local invited & knocking users leave before purge. (#16559)
This is mostly useful for federated rooms where some users would get stuck in the invite or knock state when the room was purged from their homeserver.
Diffstat (limited to 'synapse/storage')
-rw-r--r-- | synapse/storage/databases/main/roommember.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/synapse/storage/databases/main/roommember.py b/synapse/storage/databases/main/roommember.py index 67e149b586..1ed7f2d0ef 100644 --- a/synapse/storage/databases/main/roommember.py +++ b/synapse/storage/databases/main/roommember.py @@ -482,6 +482,22 @@ class RoomMemberWorkerStore(EventsWorkerStore, CacheInvalidationWorkerStore): desc="get_local_users_in_room", ) + async def get_local_users_related_to_room( + self, room_id: str + ) -> List[Tuple[str, str]]: + """ + Retrieves a list of the current roommembers who are local to the server and their membership status. + """ + return cast( + List[Tuple[str, str]], + await self.db_pool.simple_select_list( + table="local_current_membership", + keyvalues={"room_id": room_id}, + retcols=("user_id", "membership"), + desc="get_local_users_in_room", + ), + ) + async def check_local_user_in_room(self, user_id: str, room_id: str) -> bool: """ Check whether a given local user is currently joined to the given room. |