mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-06-13 12:32:52 -04:00
Mutual rooms: Remove dependency on user directory (#12836)
This commit is contained in:
parent
bda4600399
commit
6be4953b99
5 changed files with 27 additions and 58 deletions
|
@ -670,6 +670,30 @@ class RoomMemberWorkerStore(EventsWorkerStore):
|
|||
|
||||
return user_who_share_room
|
||||
|
||||
@cached(cache_context=True, iterable=True)
|
||||
async def get_mutual_rooms_between_users(
|
||||
self, user_ids: FrozenSet[str], cache_context: _CacheContext
|
||||
) -> FrozenSet[str]:
|
||||
"""
|
||||
Returns the set of rooms that all users in `user_ids` share.
|
||||
|
||||
Args:
|
||||
user_ids: A frozen set of all users to investigate and return
|
||||
overlapping joined rooms for.
|
||||
cache_context
|
||||
"""
|
||||
shared_room_ids: Optional[FrozenSet[str]] = None
|
||||
for user_id in user_ids:
|
||||
room_ids = await self.get_rooms_for_user(
|
||||
user_id, on_invalidate=cache_context.invalidate
|
||||
)
|
||||
if shared_room_ids is not None:
|
||||
shared_room_ids &= room_ids
|
||||
else:
|
||||
shared_room_ids = room_ids
|
||||
|
||||
return shared_room_ids or frozenset()
|
||||
|
||||
async def get_joined_users_from_context(
|
||||
self, event: EventBase, context: EventContext
|
||||
) -> Dict[str, ProfileInfo]:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue