|
@@ -30,6 +30,7 @@ from typing import (
|
|
|
from synapse.api.constants import EventTypes
|
|
|
from synapse.events import EventBase
|
|
|
from synapse.logging.opentracing import trace
|
|
|
+from synapse.storage.roommember import ProfileInfo
|
|
|
from synapse.storage.state import StateFilter
|
|
|
from synapse.storage.util.partial_state_events_tracker import (
|
|
|
PartialCurrentStateTracker,
|
|
@@ -506,3 +507,15 @@ class StateStorageController:
|
|
|
await self._partial_state_room_tracker.await_full_state(room_id)
|
|
|
|
|
|
return await self.stores.main.get_current_hosts_in_room(room_id)
|
|
|
+
|
|
|
+ async def get_users_in_room_with_profiles(
|
|
|
+ self, room_id: str
|
|
|
+ ) -> Dict[str, ProfileInfo]:
|
|
|
+ """
|
|
|
+ Get the current users in the room with their profiles.
|
|
|
+ If the room is currently partial-stated, this will block until the room has
|
|
|
+ full state.
|
|
|
+ """
|
|
|
+ await self._partial_state_room_tracker.await_full_state(room_id)
|
|
|
+
|
|
|
+ return await self.stores.main.get_users_in_room_with_profiles(room_id)
|