Mutual rooms: Remove dependency on user directory (#12836)

This commit is contained in:
Jonathan de Jong 2022-05-30 11:05:31 +02:00 committed by GitHub
parent bda4600399
commit 6be4953b99
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 58 deletions

View file

@ -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]: