about summary refs log tree commit diff
path: root/LibMatrix.LegacyEvents.EventTypes/LegacyEventContent.cs
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2024-05-30 09:46:43 +0000
committerRory& <root@rory.gay>2024-05-30 09:46:43 +0000
commit30a0868789466012bab869af4300aef5a9cac108 (patch)
tree12790166e4d2c01a141928143b9b4d96dd08ace8 /LibMatrix.LegacyEvents.EventTypes/LegacyEventContent.cs
parentClarify LegacyEvent types (diff)
downloadLibMatrix-bak-30a0868789466012bab869af4300aef5a9cac108.tar.xz
Rename legacy event types
Diffstat (limited to 'LibMatrix.LegacyEvents.EventTypes/LegacyEventContent.cs')
-rw-r--r--LibMatrix.LegacyEvents.EventTypes/LegacyEventContent.cs48
1 files changed, 48 insertions, 0 deletions
diff --git a/LibMatrix.LegacyEvents.EventTypes/LegacyEventContent.cs b/LibMatrix.LegacyEvents.EventTypes/LegacyEventContent.cs
new file mode 100644

index 0000000..002a85f --- /dev/null +++ b/LibMatrix.LegacyEvents.EventTypes/LegacyEventContent.cs
@@ -0,0 +1,48 @@ +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Text.Json.Serialization; + +namespace LibMatrix.LegacyEvents.EventTypes; + +public abstract class LegacyEventContent; + +public class UnknownLegacyEventContent : TimelineLegacyEventContent; + +public abstract class TimelineLegacyEventContent : LegacyEventContent { + [JsonPropertyName("m.relates_to")] + public MessageRelatesTo? RelatesTo { get; set; } + + [JsonPropertyName("m.new_content")] + public JsonObject? NewContent { get; set; } + + public TimelineLegacyEventContent SetReplaceRelation(string eventId) { + NewContent = JsonSerializer.SerializeToNode(this, GetType())!.AsObject(); + // NewContent = JsonSerializer.Deserialize(jsonText, GetType()); + RelatesTo = new MessageRelatesTo { + RelationType = "m.replace", + EventId = eventId + }; + return this; + } + + public T SetReplaceRelation<T>(string eventId) where T : TimelineLegacyEventContent => 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; } + + [JsonPropertyName("rel_type")] + public string? RelType { get; set; } + } + } +} \ No newline at end of file