about summary refs log tree commit diff
path: root/MatrixRoomUtils.Core/RoomTypes/SpaceRoom.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MatrixRoomUtils.Core/RoomTypes/SpaceRoom.cs')
-rw-r--r--MatrixRoomUtils.Core/RoomTypes/SpaceRoom.cs14
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;