1 files changed, 27 insertions, 6 deletions
diff --git a/LibMatrix/Interfaces/EventContent.cs b/LibMatrix/Interfaces/EventContent.cs
index ec09c7e..1fb6974 100644
--- a/LibMatrix/Interfaces/EventContent.cs
+++ b/LibMatrix/Interfaces/EventContent.cs
@@ -1,21 +1,42 @@
+using System.Text.Json;
+using System.Text.Json.Nodes;
using System.Text.Json.Serialization;
namespace LibMatrix.Interfaces;
-public abstract class EventContent {
-
-}
+public abstract class EventContent { }
+
public abstract class TimelineEventContent : EventContent {
[JsonPropertyName("m.relates_to")]
public MessageRelatesTo? RelatesTo { get; set; }
- // [JsonPropertyName("m.new_content")]
- // public TimelineEventContent? NewContent { get; set; }
+ [JsonPropertyName("m.new_content")]
+ public JsonObject? NewContent { get; set; }
+
+ public TimelineEventContent SetReplaceRelation(string eventId) {
+ NewContent = JsonSerializer.SerializeToNode(this, GetType()).AsObject();
+ // NewContent = JsonSerializer.Deserialize(jsonText, GetType());
+ RelatesTo = new() {
+ RelationType = "m.replace",
+ EventId = eventId
+ };
+ return this;
+ }
+
+ public T SetReplaceRelation<T>(string eventId) where T : TimelineEventContent {
+ return SetReplaceRelation(eventId) as T ?? throw new InvalidOperationException();
+ }
public class MessageRelatesTo {
[JsonPropertyName("m.in_reply_to")]
public EventInReplyTo? InReplyTo { get; set; }
+ [JsonPropertyName("event_id")]
+ public string? EventId { get; set; }
+
+ [JsonPropertyName("rel_type")]
+ public string? RelationType { get; set; }
+
public class EventInReplyTo {
[JsonPropertyName("event_id")]
public string EventId { get; set; }
@@ -24,4 +45,4 @@ public abstract class TimelineEventContent : EventContent {
public string RelType { get; set; }
}
}
-}
+}
\ No newline at end of file
|