mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 08:46:04 -04:00
Faster room joins: make /joined_members
block whilst the room is partial stated. (#13514)
This commit is contained in:
parent
5442891cbc
commit
c3516e9dec
4 changed files with 22 additions and 1 deletions
|
@ -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)
|
||||
|
|
|
@ -283,6 +283,9 @@ class RoomMemberWorkerStore(EventsWorkerStore):
|
|||
|
||||
Returns:
|
||||
A mapping from user ID to ProfileInfo.
|
||||
|
||||
Preconditions:
|
||||
- There is full state available for the room (it is not partial-stated).
|
||||
"""
|
||||
|
||||
def _get_users_in_room_with_profiles(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue