diff options
Diffstat (limited to 'MatrixRoomUtils.Core/RoomTypes/SpaceRoom.cs')
-rw-r--r-- | MatrixRoomUtils.Core/RoomTypes/SpaceRoom.cs | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/MatrixRoomUtils.Core/RoomTypes/SpaceRoom.cs b/MatrixRoomUtils.Core/RoomTypes/SpaceRoom.cs index 6b586c7..3be3130 100644 --- a/MatrixRoomUtils.Core/RoomTypes/SpaceRoom.cs +++ b/MatrixRoomUtils.Core/RoomTypes/SpaceRoom.cs @@ -8,20 +8,18 @@ namespace MatrixRoomUtils.Core.RoomTypes; public class SpaceRoom : GenericRoom { private readonly AuthenticatedHomeServer _homeServer; private readonly GenericRoom _room; + public SpaceRoom(AuthenticatedHomeServer homeServer, string roomId) : base(homeServer, roomId) { _homeServer = homeServer; } public async Task<List<GenericRoom>> GetRoomsAsync(bool includeRemoved = false) { var rooms = new List<GenericRoom>(); - var state = await GetStateAsync(""); - if (state != null) { - var states = state.Value.Deserialize<StateEventResponse[]>()!; - foreach (var stateEvent in states.Where(x => x.Type == "m.space.child")) { - var roomId = stateEvent.StateKey; - if(stateEvent.TypedContent.ToJson() != "{}" || includeRemoved) - rooms.Add(await _homeServer.GetRoom(roomId)); - } + var state = GetFullStateAsync().ToBlockingEnumerable().ToList(); + var childStates = state.Where(x => x.Type == "m.space.child"); + foreach (var stateEvent in childStates) { + if (stateEvent.TypedContent.ToJson() != "{}" || includeRemoved) + rooms.Add(await _homeServer.GetRoom(stateEvent.StateKey)); } return rooms; |