From 08f5483df2c01eba7c764cdaec94fca71e4976b8 Mon Sep 17 00:00:00 2001 From: Rory& Date: Thu, 30 May 2024 09:31:29 +0000 Subject: Clarify LegacyEvent types --- .../State/RoomInfo/RoomPowerLevelEventContent.cs | 93 ---------------------- 1 file changed, 93 deletions(-) delete mode 100644 LibMatrix.EventTypes/Spec/State/RoomInfo/RoomPowerLevelEventContent.cs (limited to 'LibMatrix.EventTypes/Spec/State/RoomInfo/RoomPowerLevelEventContent.cs') diff --git a/LibMatrix.EventTypes/Spec/State/RoomInfo/RoomPowerLevelEventContent.cs b/LibMatrix.EventTypes/Spec/State/RoomInfo/RoomPowerLevelEventContent.cs deleted file mode 100644 index 49a1b62..0000000 --- a/LibMatrix.EventTypes/Spec/State/RoomInfo/RoomPowerLevelEventContent.cs +++ /dev/null @@ -1,93 +0,0 @@ -using System.Text.Json.Serialization; - -namespace LibMatrix.EventTypes.Spec.State; - -[MatrixEvent(EventName = EventId)] -[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString)] -public class RoomPowerLevelEventContent : EventContent { - public const string EventId = "m.room.power_levels"; - - [JsonPropertyName("ban")] - public long? Ban { get; set; } = 50; - - [JsonPropertyName("events_default")] - public long? EventsDefault { get; set; } = 0; - - [JsonPropertyName("invite")] - public long? Invite { get; set; } = 0; - - [JsonPropertyName("kick")] - public long? Kick { get; set; } = 50; - - [JsonPropertyName("notifications")] - public NotificationsPL? NotificationsPl { get; set; } // = null!; - - [JsonPropertyName("redact")] - public long? Redact { get; set; } = 50; - - [JsonPropertyName("state_default")] - public long? StateDefault { get; set; } = 50; - - [JsonPropertyName("events")] - public Dictionary? Events { get; set; } // = null!; - - [JsonPropertyName("users")] - public Dictionary? Users { get; set; } // = null!; - - [JsonPropertyName("users_default")] - public long? UsersDefault { get; set; } = 0; - - [Obsolete("Historical was a key related to MSC2716, a spec change on backfill that was dropped!", true)] - [JsonIgnore] - [JsonPropertyName("historical")] - public long Historical { get; set; } // = 50; - - public class NotificationsPL { - [JsonPropertyName("room")] - public long Room { get; set; } = 50; - } - - public bool IsUserAdmin(string userId) { - ArgumentNullException.ThrowIfNull(userId); - return Users.TryGetValue(userId, out var level) && level >= Events.Max(x => x.Value); - } - - public bool UserHasTimelinePermission(string userId, string eventType) { - ArgumentNullException.ThrowIfNull(userId); - return Users.TryGetValue(userId, out var level) && level >= Events.GetValueOrDefault(eventType, EventsDefault ?? 0); - } - - public bool UserHasStatePermission(string userId, string eventType) { - ArgumentNullException.ThrowIfNull(userId); - var userLevel = GetUserPowerLevel(userId); - var eventLevel = GetStateEventPowerLevel(eventType); - - Console.WriteLine($"{userId}={userLevel} >= {eventType}={eventLevel} = {userLevel >= eventLevel}"); - - return userLevel >= eventLevel; - } - - public long GetUserPowerLevel(string userId) { - ArgumentNullException.ThrowIfNull(userId); - if (Users is null) return UsersDefault ?? 0; - return Users.TryGetValue(userId, out var level) ? level : UsersDefault ?? 0; - } - - public long GetStateEventPowerLevel(string eventType) { - ArgumentNullException.ThrowIfNull(eventType); - if (Events is null) return StateDefault ?? 0; - return Events.TryGetValue(eventType, out var level) ? level : StateDefault ?? 0; - } - - public long GetTimelineEventPowerLevel(string eventType) { - ArgumentNullException.ThrowIfNull(eventType); - if (Events is null) return EventsDefault ?? 0; - return Events.TryGetValue(eventType, out var level) ? level : EventsDefault ?? 0; - } - - public void SetUserPowerLevel(string userId, long powerLevel) { - ArgumentNullException.ThrowIfNull(userId); - Users ??= new Dictionary(); - Users[userId] = powerLevel; - } -} \ No newline at end of file -- cgit 1.4.1