From 8dadf547033d71480fd7756809992c0f32549f59 Mon Sep 17 00:00:00 2001 From: "Emma [it/its]@Rory&" Date: Thu, 11 Jan 2024 07:31:09 +0100 Subject: Cleanup, more message formatters, messagebuilder start --- LibMatrix.EventTypes/LibMatrix.EventTypes.csproj | 13 ++++++ .../State/Policy/PolicyRuleStateEventContent.cs | 54 ++++++++++++++++++---- 2 files changed, 57 insertions(+), 10 deletions(-) (limited to 'LibMatrix.EventTypes') diff --git a/LibMatrix.EventTypes/LibMatrix.EventTypes.csproj b/LibMatrix.EventTypes/LibMatrix.EventTypes.csproj index 3a63532..a242125 100644 --- a/LibMatrix.EventTypes/LibMatrix.EventTypes.csproj +++ b/LibMatrix.EventTypes/LibMatrix.EventTypes.csproj @@ -5,5 +5,18 @@ enable enable + + + + + + + + + diff --git a/LibMatrix.EventTypes/Spec/State/Policy/PolicyRuleStateEventContent.cs b/LibMatrix.EventTypes/Spec/State/Policy/PolicyRuleStateEventContent.cs index d3ab8cb..5293082 100644 --- a/LibMatrix.EventTypes/Spec/State/Policy/PolicyRuleStateEventContent.cs +++ b/LibMatrix.EventTypes/Spec/State/Policy/PolicyRuleStateEventContent.cs @@ -1,53 +1,80 @@ using System.Text.Json.Serialization; +using ArcaneLibs.Attributes; namespace LibMatrix.EventTypes.Spec.State.Policy; //spec -[MatrixEvent(EventName = EventId)] //spec -[MatrixEvent(EventName = "m.room.rule.server")] //??? -[MatrixEvent(EventName = "org.matrix.mjolnir.rule.server")] //legacy +[MatrixEvent(EventName = EventId)] //spec +[MatrixEvent(EventName = "m.room.rule.server", Legacy = true)] //??? +[MatrixEvent(EventName = "org.matrix.mjolnir.rule.server", Legacy = true)] //legacy +[FriendlyName(Name = "Server policy", NamePlural = "Server policies")] public class ServerPolicyRuleEventContent : PolicyRuleEventContent { public const string EventId = "m.policy.rule.server"; } -[MatrixEvent(EventName = EventId)] //spec -[MatrixEvent(EventName = "m.room.rule.user")] //??? -[MatrixEvent(EventName = "org.matrix.mjolnir.rule.user")] //legacy +[MatrixEvent(EventName = EventId)] //spec +[MatrixEvent(EventName = "m.room.rule.user", Legacy = true)] //??? +[MatrixEvent(EventName = "org.matrix.mjolnir.rule.user", Legacy = true)] //legacy +[FriendlyName(Name = "User policy", NamePlural = "User policies")] public class UserPolicyRuleEventContent : PolicyRuleEventContent { public const string EventId = "m.policy.rule.user"; } -[MatrixEvent(EventName = EventId)] //spec -[MatrixEvent(EventName = "m.room.rule.room")] //??? -[MatrixEvent(EventName = "org.matrix.mjolnir.rule.room")] //legacy +[MatrixEvent(EventName = EventId)] //spec +[MatrixEvent(EventName = "m.room.rule.room", Legacy = true)] //??? +[MatrixEvent(EventName = "org.matrix.mjolnir.rule.room", Legacy = true)] //legacy +[FriendlyName(Name = "Room policy", NamePlural = "Room policies")] public class RoomPolicyRuleEventContent : PolicyRuleEventContent { public const string EventId = "m.policy.rule.room"; } public abstract class PolicyRuleEventContent : EventContent { + public PolicyRuleEventContent() { + Console.WriteLine($"init policy {GetType().Name}"); + } + private string? _reason; + /// /// Entity this ban applies to, can use * and ? as globs. /// Policy is invalid if entity is null /// [JsonPropertyName("entity")] + [FriendlyName(Name = "Entity")] public string? Entity { get; set; } + + private bool init; /// /// Reason this user is banned /// [JsonPropertyName("reason")] - public string? Reason { get; set; } + [FriendlyName(Name = "Reason")] + public virtual string? Reason { + get { + // Console.WriteLine($"Read policy reason: {_reason}"); + return _reason; + } + set { + // Console.WriteLine($"Set policy reason: {value}"); + // if(init) + // Console.WriteLine(string.Join('\n', Environment.StackTrace.Split('\n')[..5])); + // init = true; + _reason = value; + } + } /// /// Suggested action to take /// [JsonPropertyName("recommendation")] + [FriendlyName(Name = "Recommendation")] public string? Recommendation { get; set; } /// /// Expiry time in milliseconds since the unix epoch, or null if the ban has no expiry. /// [JsonPropertyName("support.feline.policy.expiry.rev.2")] //stable prefix: expiry, msc pending + [TableHide] public long? Expiry { get; set; } //utils @@ -55,6 +82,7 @@ public abstract class PolicyRuleEventContent : EventContent { /// Readable expiry time, provided for easy interaction /// [JsonPropertyName("gay.rory.matrix_room_utils.readable_expiry_time_utc")] + [FriendlyName(Name = "Expires at")] public DateTime? ExpiryDateTime { get => Expiry == null ? null : DateTimeOffset.FromUnixTimeMilliseconds(Expiry.Value).DateTime; set => Expiry = ((DateTimeOffset)value).ToUnixTimeMilliseconds(); @@ -72,3 +100,9 @@ public static class PolicyRecommendationTypes { /// public static string Mute = "support.feline.policy.recommendation_mute"; //stable prefix: m.mute, msc pending } + +// public class PolicySchemaDefinition { +// public required string Name { get; set; } +// public required bool Optional { get; set; } +// +// } \ No newline at end of file -- cgit 1.4.1