about summary refs log tree commit diff
path: root/LibMatrix/Responses
diff options
context:
space:
mode:
Diffstat (limited to 'LibMatrix/Responses')
-rw-r--r--LibMatrix/Responses/SyncResponse.cs6
-rw-r--r--LibMatrix/Responses/UserProfileResponse.cs15
2 files changed, 18 insertions, 3 deletions
diff --git a/LibMatrix/Responses/SyncResponse.cs b/LibMatrix/Responses/SyncResponse.cs
index 2d3d3f8..f2b901d 100644
--- a/LibMatrix/Responses/SyncResponse.cs
+++ b/LibMatrix/Responses/SyncResponse.cs
@@ -86,7 +86,7 @@ public class SyncResponse {
             [JsonPropertyName("summary")]
             public SummaryDataStructure? Summary { get; set; }
 
-            public class TimelineDataStructure {
+            public class TimelineDataStructure : EventList {
                 public TimelineDataStructure() { }
 
                 public TimelineDataStructure(List<StateEventResponse>? events, bool? limited) {
@@ -94,8 +94,8 @@ public class SyncResponse {
                     Limited = limited;
                 }
 
-                [JsonPropertyName("events")]
-                public List<StateEventResponse>? Events { get; set; }
+                // [JsonPropertyName("events")]
+                // public List<StateEventResponse>? Events { get; set; }
 
                 [JsonPropertyName("prev_batch")]
                 public string? PrevBatch { get; set; }
diff --git a/LibMatrix/Responses/UserProfileResponse.cs b/LibMatrix/Responses/UserProfileResponse.cs
index 6c9380f..30e4c32 100644
--- a/LibMatrix/Responses/UserProfileResponse.cs
+++ b/LibMatrix/Responses/UserProfileResponse.cs
@@ -1,3 +1,4 @@
+using System.Text.Json;
 using System.Text.Json.Serialization;
 
 namespace LibMatrix.Responses;
@@ -8,4 +9,18 @@ public class UserProfileResponse {
 
     [JsonPropertyName("displayname")]
     public string? DisplayName { get; set; }
+
+    // MSC 4133 - Extending User Profile API with Key:Value pairs
+    [JsonExtensionData]
+    public Dictionary<string, JsonElement>? CustomKeys { get; set; }
+
+    public JsonElement? this[string key] {
+        get => CustomKeys?[key];
+        set {
+            if (value is null)
+                CustomKeys?.Remove(key);
+            else
+                (CustomKeys ??= [])[key] = value.Value;
+        }
+    }
 }
\ No newline at end of file