diff options
Diffstat (limited to 'MatrixRoomUtils.Web/Pages/RoomManager/RoomManager.razor')
-rw-r--r-- | MatrixRoomUtils.Web/Pages/RoomManager/RoomManager.razor | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/MatrixRoomUtils.Web/Pages/RoomManager/RoomManager.razor b/MatrixRoomUtils.Web/Pages/RoomManager/RoomManager.razor index 6d27679..35bf501 100644 --- a/MatrixRoomUtils.Web/Pages/RoomManager/RoomManager.razor +++ b/MatrixRoomUtils.Web/Pages/RoomManager/RoomManager.razor @@ -11,21 +11,28 @@ else { <p>You are in @Rooms.Count rooms and @Spaces.Count spaces</p> + <p> + <a href="/RoomManagerCreateRoom">Create room</a> + </p> + <details open> <summary>Space List</summary> @foreach (var room in Spaces) { - <a style="color: unset; text-decoration: unset;" href="/RoomManager/Space/@room.RoomId.Replace('.', '~')"><RoomListItem Room="@room" ShowOwnProfile="true"></RoomListItem></a> + <a style="color: unset; text-decoration: unset;" href="/RoomManager/Space/@room.RoomId.Replace('.', '~')"> + <RoomListItem Room="@room" ShowOwnProfile="true"></RoomListItem> + </a> } </details> <details open> <summary>Room List</summary> @foreach (var room in Rooms) { - <a style="color: unset; text-decoration: unset;" href="/RoomManager/Room/@room.RoomId.Replace('.', '~')"><RoomListItem Room="@room" ShowOwnProfile="true"></RoomListItem></a> + <a style="color: unset; text-decoration: unset;" href="/RoomManager/Room/@room.RoomId.Replace('.', '~')"> + <RoomListItem Room="@room" ShowOwnProfile="true"></RoomListItem> + </a> } </details> - } <div style="margin-bottom: 4em;"></div> @@ -34,9 +41,10 @@ else @code { public List<Room> Rooms { get; set; } = new(); public List<Room> Spaces { get; set; } = new(); + protected override async Task OnInitializedAsync() { - if (!RuntimeCache.WasLoaded) await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); + await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); await base.OnInitializedAsync(); if (RuntimeCache.CurrentHomeServer == null) { @@ -45,40 +53,47 @@ else } Rooms = await RuntimeCache.CurrentHomeServer.GetJoinedRooms(); StateHasChanged(); - var semaphore = new SemaphoreSlim(1000); + Console.WriteLine($"Got {Rooms.Count} rooms"); + var semaphore = new SemaphoreSlim(10); var tasks = new List<Task<Room?>>(); foreach (var room in Rooms) { tasks.Add(CheckIfSpace(room, semaphore)); } await Task.WhenAll(tasks); - + Console.WriteLine("Fetched joined rooms!"); } - + private async Task<Room?> CheckIfSpace(Room room, SemaphoreSlim semaphore) { await semaphore.WaitAsync(); + // Console.WriteLine($"Checking if {room.RoomId} is a space"); try { - var state = await room.GetStateAsync("m.room.create"); + var state = await room.GetStateAsync<CreateEvent>("m.room.create"); if (state != null) { - //Console.WriteLine(state.Value.ToJson()); - if(state.Value.TryGetProperty("type", out var type)) + //Console.WriteLine(state.Value.ToJson()); + if (state.Type != null) { - if(type.ToString() == "m.space") + if (state.Type == "m.space") { + Console.WriteLine($"Room {room.RoomId} is a space!"); Spaces.Add(room); Rooms.Remove(room); StateHasChanged(); return room; } + else + { + Console.WriteLine($"Encountered unknown room type {state.Type}"); + } } else { - //this is fine, apprently... - //Console.WriteLine($"Room {room.RoomId} has no content.type in m.room.create!"); + //this is fine, apprently... + // Console.WriteLine($"Room {room.RoomId} has no Content.type in m.room.create!"); } } } @@ -93,4 +108,5 @@ else } return null; } -} \ No newline at end of file + +} \ No newline at end of file |