about summary refs log tree commit diff
path: root/Utilities/LibMatrix.HomeserverEmulator/Extensions/EventExtensions.cs
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2024-09-17 04:26:25 +0200
committerRory& <root@rory.gay>2024-09-17 04:26:25 +0200
commit37a8ac420278fd53ab8218956f1ba13692feb48e (patch)
tree83afec51130a254f6ed0ba11c45975f3f2ba8b9f /Utilities/LibMatrix.HomeserverEmulator/Extensions/EventExtensions.cs
parentDrop example bots (diff)
parentMove around some projects, further cleanup pending (diff)
downloadLibMatrix-37a8ac420278fd53ab8218956f1ba13692feb48e.tar.xz
Merge remote-tracking branch 'origin/dev/project-cleanup'
Diffstat (limited to 'Utilities/LibMatrix.HomeserverEmulator/Extensions/EventExtensions.cs')
-rw-r--r--Utilities/LibMatrix.HomeserverEmulator/Extensions/EventExtensions.cs24
1 files changed, 24 insertions, 0 deletions
diff --git a/Utilities/LibMatrix.HomeserverEmulator/Extensions/EventExtensions.cs b/Utilities/LibMatrix.HomeserverEmulator/Extensions/EventExtensions.cs
new file mode 100644
index 0000000..d938b1b
--- /dev/null
+++ b/Utilities/LibMatrix.HomeserverEmulator/Extensions/EventExtensions.cs
@@ -0,0 +1,24 @@
+using LibMatrix.HomeserverEmulator.Services;
+
+namespace LibMatrix.HomeserverEmulator.Extensions;
+
+public static class EventExtensions {
+    public static StateEventResponse ToStateEvent(this StateEvent stateEvent, UserStore.User user, RoomStore.Room room) {
+        return new StateEventResponse {
+            RawContent = stateEvent.RawContent,
+            EventId = "$" + string.Join("", Random.Shared.GetItems("abcdefghijklmnopqrstuvwxyzABCDEFGHIJLKMNOPQRSTUVWXYZ0123456789".ToCharArray(), 100)),
+            RoomId = room.RoomId,
+            Sender = user.UserId,
+            StateKey = stateEvent.StateKey,
+            Type = stateEvent.Type,
+            OriginServerTs = DateTimeOffset.Now.ToUnixTimeMilliseconds()
+        };
+    }
+
+    public static List<StateEventResponse> GetCalculatedState(this IEnumerable<StateEventResponse> events) {
+        return events.Where(s => s.StateKey != null)
+            .OrderByDescending(s => s.OriginServerTs)
+            .DistinctBy(x => (x.Type, x.StateKey))
+            .ToList();
+    }
+}
\ No newline at end of file