diff options
author | Emma [it/its]@Rory& <root@rory.gay> | 2024-06-01 19:02:28 +0200 |
---|---|---|
committer | Emma [it/its]@Rory& <root@rory.gay> | 2024-06-01 19:03:05 +0200 |
commit | a129b321998614b20e4ebb8a7c1632553ebee981 (patch) | |
tree | f4e16f7b1bbeffc21e81f8749e4980994242ff19 /LibMatrix.EventTypes.Abstractions/BaseMatrixEventContent.cs | |
parent | Event serialisation fix (diff) | |
download | LibMatrix-a129b321998614b20e4ebb8a7c1632553ebee981.tar.xz |
Split event abstractions
Diffstat (limited to '')
-rw-r--r-- | LibMatrix.EventTypes.Abstractions/BaseMatrixEventContent.cs (renamed from LibMatrix.EventTypes/MatrixEventContent.cs) | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/LibMatrix.EventTypes/MatrixEventContent.cs b/LibMatrix.EventTypes.Abstractions/BaseMatrixEventContent.cs index 81b8c52..eba50a5 100644 --- a/LibMatrix.EventTypes/MatrixEventContent.cs +++ b/LibMatrix.EventTypes.Abstractions/BaseMatrixEventContent.cs @@ -12,21 +12,18 @@ namespace LibMatrix.EventTypes; /// <seealso cref="System.Text.Json.Nodes.JsonNode"/> /// <seealso cref="System.Text.Json.Nodes.JsonObject"/> /// </summary> -[JsonConverter(typeof(MatrixEventContentConverter<MatrixEventContent>))] -public class MatrixEventContent { - - [JsonExtensionData, JsonInclude] +[JsonConverter(typeof(MatrixEventContentConverter<BaseMatrixEventContent>))] +// [JsonSerializable(typeof(MatrixEventContent))] +public class BaseMatrixEventContent { public JsonObject InternalJson { get; set; } = new(); - - - public MatrixEventContent() { } + public BaseMatrixEventContent() { } - public MatrixEventContent(JsonNode json) { + public BaseMatrixEventContent(JsonNode json) { InternalJson = json.AsObject(); } - public static implicit operator MatrixEventContent(JsonNode json) => new(json); + public static implicit operator BaseMatrixEventContent(JsonNode json) => new(json); // public static implicit operator JsonNode(MatrixEventContent content) => content.InternalJson; @@ -41,20 +38,17 @@ public class MatrixEventContent { public string ToJson() => InternalJson.ToJson(); - public class MatrixEventContentConverter<T> : JsonConverter<T> where T : MatrixEventContent, new() { + public class MatrixEventContentConverter<T> : JsonConverter<T> where T : BaseMatrixEventContent, new() { public override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { // read entire object into a JsonObject + // Console.WriteLine($"MatrixEventContentConverter<T>: Reading {typeToConvert}"); var json = JsonNode.Parse(ref reader); return new T { InternalJson = json.AsObject() }; } public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options) { + // Console.WriteLine($"MatrixEventContentConverter<T>: Writing {value.GetType()}"); value.InternalJson.WriteTo(writer); } } -} - -public class MatrixEventAttribute(string eventType, bool deprecated = false) : Attribute { - public string EventType { get; } = eventType; - public bool Deprecated { get; } = deprecated; } \ No newline at end of file |