From 81bf1a1cd1678efd2e73ebc347f51809cffaac46 Mon Sep 17 00:00:00 2001 From: TheArcaneBrony Date: Mon, 29 May 2023 09:33:32 +0200 Subject: Bugfixes, improvements --- .../Extensions/ObjectExtensions.cs | 3 ++- MatrixRoomUtils.Core/StateEvent.cs | 15 +++++++++++- .../Pages/RoomManager/RoomManagerCreateRoom.razor | 27 ++++++++++++++-------- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/MatrixRoomUtils.Core/Extensions/ObjectExtensions.cs b/MatrixRoomUtils.Core/Extensions/ObjectExtensions.cs index aa1832d..5aa9645 100644 --- a/MatrixRoomUtils.Core/Extensions/ObjectExtensions.cs +++ b/MatrixRoomUtils.Core/Extensions/ObjectExtensions.cs @@ -4,11 +4,12 @@ namespace MatrixRoomUtils.Core.Extensions; public static class ObjectExtensions { - public static string ToJson(this object obj, bool indent = true, bool ignoreNull = false) + public static string ToJson(this object obj, bool indent = true, bool ignoreNull = false, bool unsafeContent = false) { var jso = new JsonSerializerOptions(); if(indent) jso.WriteIndented = true; if(ignoreNull) jso.IgnoreNullValues = true; + if(unsafeContent) jso.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping; return JsonSerializer.Serialize(obj, jso); } } \ No newline at end of file diff --git a/MatrixRoomUtils.Core/StateEvent.cs b/MatrixRoomUtils.Core/StateEvent.cs index f98d963..6321fb6 100644 --- a/MatrixRoomUtils.Core/StateEvent.cs +++ b/MatrixRoomUtils.Core/StateEvent.cs @@ -24,6 +24,19 @@ public class StateEvent { return (StateEvent)this; } + + public string dtype + { + get + { + string res = GetType().Name switch + { + "StateEvent`1" => $"StateEvent<{Content.GetType().Name}>", + _ => GetType().Name + }; + return res; + } + } } public class StateEvent : StateEvent where T : class @@ -38,5 +51,5 @@ public class StateEvent : StateEvent where T : class } } [JsonPropertyName("content")] - public T Content { get; set; } + public new T Content { get; set; } } \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Pages/RoomManager/RoomManagerCreateRoom.razor b/MatrixRoomUtils.Web/Pages/RoomManager/RoomManagerCreateRoom.razor index c43e276..cb133dd 100644 --- a/MatrixRoomUtils.Web/Pages/RoomManager/RoomManagerCreateRoom.razor +++ b/MatrixRoomUtils.Web/Pages/RoomManager/RoomManagerCreateRoom.razor @@ -65,15 +65,10 @@ Guest access: -@code -{ - bool test { get; set; } = true; - GuestAccessContent a => creationEvent["m.room.guest_access"].As().Content; -} -@(a.IsGuestAccessEnabled ? "Guests can join" : "Guests cannot join") + @(guestAccessEvent.IsGuestAccessEnabled ? "Guests can join" : "Guests cannot join") @* *@ - @* *@ - @* *@ + @* *@ + @* *@ @* *@ @@ -98,7 +93,7 @@ { var _event = user; - : + : @@ -235,12 +230,24 @@ JsonChanged(); OverwriteWrappedPropertiesFromEvent(); creationEvent.PowerLevelContentOverride.Events = creationEvent.PowerLevelContentOverride.Events.OrderByDescending(x => x.Value).ThenBy(x => x.Key).ToDictionary(x => x.Key, x => x.Value); + creationEvent.PowerLevelContentOverride.Users = creationEvent.PowerLevelContentOverride.Users.OrderByDescending(x => x.Value).ThenBy(x => x.Key).ToDictionary(x => x.Key, x => x.Value); + guestAccessEvent = creationEvent["m.room.guest_access"].As().Content; + + Console.WriteLine($"Creation event uncasted: {creationEvent["m.room.guest_access"].ToJson()}"); + Console.WriteLine($"Creation event casted: {creationEvent["m.room.guest_access"].As().ToJson()}"); + creationEvent["m.room.guest_access"].As().Content.IsGuestAccessEnabled = false; + Console.WriteLine("-- Created new guest access content --"); + Console.WriteLine($"Creation event uncasted: {creationEvent["m.room.guest_access"].ToJson()}"); + Console.WriteLine($"Creation event casted: {creationEvent["m.room.guest_access"].As().ToJson()}"); + Console.WriteLine($"Creation event casted back: {creationEvent["m.room.guest_access"].As().ToJson()}"); + StateHasChanged(); } } private Dictionary creationEventValidationErrors { get; set; } = new(); private CreateRoomRequest creationEvent { get; set; } + GuestAccessContent guestAccessEvent { get; set; } private Dictionary Presets { get; set; } = new(); @@ -355,6 +362,7 @@ "m.room.server_acl" => "Change server ACLs", _ => key }; + public class GuestAccessContent { [JsonPropertyName("guest_access")] @@ -366,6 +374,7 @@ set => GuestAccess = value ? "can_join" : "forbidden"; } } + } -- cgit 1.5.1