about summary refs log tree commit diff
path: root/LibMatrix.EventTypes
diff options
context:
space:
mode:
Diffstat (limited to 'LibMatrix.EventTypes')
-rw-r--r--LibMatrix.EventTypes/Spec/State/Policy/PolicyRuleStateEventContent.cs5
-rw-r--r--LibMatrix.EventTypes/Spec/State/RoomInfo/RoomPowerLevelEventContent.cs9
2 files changed, 10 insertions, 4 deletions
diff --git a/LibMatrix.EventTypes/Spec/State/Policy/PolicyRuleStateEventContent.cs b/LibMatrix.EventTypes/Spec/State/Policy/PolicyRuleStateEventContent.cs
index 6006048..5bfd77b 100644
--- a/LibMatrix.EventTypes/Spec/State/Policy/PolicyRuleStateEventContent.cs
+++ b/LibMatrix.EventTypes/Spec/State/Policy/PolicyRuleStateEventContent.cs
@@ -1,5 +1,7 @@
+using System.Security.Cryptography;
 using System.Text.Json.Serialization;
 using ArcaneLibs.Attributes;
+using ArcaneLibs.Extensions;
 
 namespace LibMatrix.EventTypes.Spec.State.Policy;
 
@@ -79,6 +81,7 @@ public abstract class PolicyRuleEventContent : EventContent {
     /// </summary>
     [JsonPropertyName("gay.rory.matrix_room_utils.readable_expiry_time_utc")]
     [FriendlyName(Name = "Expires at")]
+    [TableHide]
     public DateTime? ExpiryDateTime {
         get => Expiry == null ? null : DateTimeOffset.FromUnixTimeMilliseconds(Expiry.Value).DateTime;
         set {
@@ -86,6 +89,8 @@ public abstract class PolicyRuleEventContent : EventContent {
                 Expiry = ((DateTimeOffset)value).ToUnixTimeMilliseconds();
         }
     }
+
+    public string GetDraupnir2StateKey() => Convert.ToBase64String(SHA256.HashData($"{Entity}{Recommendation}".AsBytes().ToArray()));
 }
 
 public static class PolicyRecommendationTypes {
diff --git a/LibMatrix.EventTypes/Spec/State/RoomInfo/RoomPowerLevelEventContent.cs b/LibMatrix.EventTypes/Spec/State/RoomInfo/RoomPowerLevelEventContent.cs
index 49a1b62..eb156b3 100644
--- a/LibMatrix.EventTypes/Spec/State/RoomInfo/RoomPowerLevelEventContent.cs
+++ b/LibMatrix.EventTypes/Spec/State/RoomInfo/RoomPowerLevelEventContent.cs
@@ -57,12 +57,13 @@ public class RoomPowerLevelEventContent : EventContent {
         return Users.TryGetValue(userId, out var level) && level >= Events.GetValueOrDefault(eventType, EventsDefault ?? 0);
     }
 
-    public bool UserHasStatePermission(string userId, string eventType) {
+    public bool UserHasStatePermission(string userId, string eventType, bool log = false) {
         ArgumentNullException.ThrowIfNull(userId);
         var userLevel = GetUserPowerLevel(userId);
         var eventLevel = GetStateEventPowerLevel(eventType);
-        
-        Console.WriteLine($"{userId}={userLevel} >= {eventType}={eventLevel} = {userLevel >= eventLevel}");
+
+        if (log)
+            Console.WriteLine($"{userId}={userLevel} >= {eventType}={eventLevel} = {userLevel >= eventLevel}");
 
         return userLevel >= eventLevel;
     }
@@ -78,7 +79,7 @@ public class RoomPowerLevelEventContent : EventContent {
         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;