about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTheArcaneBrony <myrainbowdash949@gmail.com>2023-05-04 00:40:55 +0200
committerTheArcaneBrony <myrainbowdash949@gmail.com>2023-05-04 00:40:55 +0200
commit5132155714d3953a4a4fb0eba7fe2febe7e5e564 (patch)
tree4383337796a79a391be27235692c0efb8fca23e4
parentFix state reloading (diff)
downloadMatrixUtils-5132155714d3953a4a4fb0eba7fe2febe7e5e564.tar.xz
Fix bugs in policy editor and state viewer
-rw-r--r--MatrixRoomUtils.Core/Room.cs8
-rw-r--r--MatrixRoomUtils.Web/Pages/PolicyListEditorPage.razor7
-rw-r--r--MatrixRoomUtils.Web/Pages/PolicyListRoomList.razor4
3 files changed, 15 insertions, 4 deletions
diff --git a/MatrixRoomUtils.Core/Room.cs b/MatrixRoomUtils.Core/Room.cs
index 44364c6..fff5013 100644
--- a/MatrixRoomUtils.Core/Room.cs
+++ b/MatrixRoomUtils.Core/Room.cs
@@ -17,7 +17,11 @@ public class Room
     public async Task<JsonElement?> GetStateAsync(string type, string state_key="")
     {
         Console.WriteLine($"{RoomId}::_qry[{type}::{state_key}]");
-        var res = await _httpClient.GetAsync($"/_matrix/client/r0/rooms/{RoomId}/state/{type}/{state_key}");
+        var url = $"/_matrix/client/r0/rooms/{RoomId}/state";
+        if (!string.IsNullOrEmpty(state_key)) url += $"/{type}/{state_key}";
+        else if (!string.IsNullOrEmpty(type)) url += $"/{type}";
+        
+        var res = await _httpClient.GetAsync(url);
         if (!res.IsSuccessStatusCode)
         {
             Console.WriteLine($"{RoomId}::_qry[{type}::{state_key}]->status=={res.StatusCode}");
@@ -35,7 +39,7 @@ public class Room
             return null;
         }
         Console.WriteLine($"{RoomId}::_qry_name->{res.Value.ToString()}");
-        var resn = res?.GetProperty("name").GetString();
+        var resn = res?.TryGetProperty("name", out var name) ?? false ? name.GetString() : null;
         Console.WriteLine($"Got name: {resn}");
         return resn;
     }
diff --git a/MatrixRoomUtils.Web/Pages/PolicyListEditorPage.razor b/MatrixRoomUtils.Web/Pages/PolicyListEditorPage.razor
index ec452f3..66a5c9f 100644
--- a/MatrixRoomUtils.Web/Pages/PolicyListEditorPage.razor
+++ b/MatrixRoomUtils.Web/Pages/PolicyListEditorPage.razor
@@ -215,7 +215,12 @@ else
     // Console.WriteLine(JsonSerializer.Deserialize<object>(content).ToJson());
     // var stateEvents = JsonSerializer.Deserialize<List<StateEvent>>(content);
         var room = await RuntimeCache.CurrentHomeServer.GetRoom(RoomId);
-        var stateEvents = (await room.GetStateAsync(""))!.Value.Deserialize<List<StateEvent>>();
+        var stateEventsQuery = await room.GetStateAsync("");
+        if (stateEventsQuery == null)
+        {
+            Console.WriteLine("state events query is null!!!");
+        }
+        var stateEvents = stateEventsQuery.Value.Deserialize<List<StateEvent>>();
         PolicyEvents = stateEvents.Where(x => x.type.StartsWith("m.policy.rule"))
             .Select(x => JsonSerializer.Deserialize<StateEvent<PolicyRuleStateEventData>>(JsonSerializer.Serialize(x))).ToList();
         StateHasChanged();
diff --git a/MatrixRoomUtils.Web/Pages/PolicyListRoomList.razor b/MatrixRoomUtils.Web/Pages/PolicyListRoomList.razor
index 924b68f..3af60b7 100644
--- a/MatrixRoomUtils.Web/Pages/PolicyListRoomList.razor
+++ b/MatrixRoomUtils.Web/Pages/PolicyListRoomList.razor
@@ -125,7 +125,9 @@ else
 
     // --- //
             var r = await RuntimeCache.CurrentHomeServer.GetRoom(room);
-            roomInfo.Shortcode = (await r.GetStateAsync("org.matrix.mjolnir.shortcode")).Value.GetProperty("shortcode").GetString();
+            var shortcodeState = await r.GetStateAsync("org.matrix.mjolnir.shortcode");
+            if(!shortcodeState.HasValue) return null;
+            roomInfo.Shortcode = shortcodeState.Value.TryGetProperty("shortcode", out JsonElement shortcode) ? shortcode.GetString() : null;
 
             if (roomInfo.Shortcode != null)
             {