diff --git a/ConsoleApp1/ConsoleApp1.csproj b/ConsoleApp1/ConsoleApp1.csproj
new file mode 100644
index 0000000..f30d408
--- /dev/null
+++ b/ConsoleApp1/ConsoleApp1.csproj
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <OutputType>Exe</OutputType>
+ <TargetFramework>net8.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\LibMatrix.EventTypes\LibMatrix.EventTypes.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs
new file mode 100644
index 0000000..7831ce8
--- /dev/null
+++ b/ConsoleApp1/Program.cs
@@ -0,0 +1,25 @@
+// See https://aka.ms/new-console-template for more information
+
+using LibMatrix.EventTypes;
+using LibMatrix.EventTypes.Events;
+
+Console.WriteLine("Hello, World!");
+
+MatrixEventCollection collection = new();
+collection.Add(new MatrixEvent<RoomMembershipEventContent>() {
+ Content = new RoomMembershipEventContent() {
+ Membership = "yes"
+ }
+});
+
+List<MatrixEvent<MatrixEventContent>> collection2 = new();
+collection2.Add(new MatrixEvent<RoomMembershipEventContent>() {
+ Content = new RoomMembershipEventContent() {
+ Membership = "yes"
+ }
+});
+
+List<MatrixEventContent> collection3 = new();
+collection3.Add(new RoomMembershipEventContent() {
+ Membership = "yes"
+});
\ No newline at end of file
diff --git a/ExampleBots/ModerationBot b/ExampleBots/ModerationBot
-Subproject c137f94aeb122c636629fb9361dd73626594f69
+Subproject b5db50961eeedf24f0c969799e6f24830c973b0
diff --git a/LibMatrix.EventTypes/Events/RoomMembershipEventContent.cs b/LibMatrix.EventTypes/Events/RoomMembershipEventContent.cs
new file mode 100644
index 0000000..dac7094
--- /dev/null
+++ b/LibMatrix.EventTypes/Events/RoomMembershipEventContent.cs
@@ -0,0 +1,10 @@
+using System.Text.Json.Serialization;
+
+namespace LibMatrix.EventTypes.Events;
+
+public class RoomMembershipEventContent : MatrixEventContent {
+ public string Membership {
+ get => _json["membership"]!.GetValue<string>();
+ set => Console.WriteLine(value);
+ }
+}
\ No newline at end of file
diff --git a/LibMatrix.EventTypes/MatrixEvent.cs b/LibMatrix.EventTypes/MatrixEvent.cs
new file mode 100644
index 0000000..63f1e75
--- /dev/null
+++ b/LibMatrix.EventTypes/MatrixEvent.cs
@@ -0,0 +1,9 @@
+using System.Text.Json.Serialization;
+
+namespace LibMatrix.EventTypes;
+
+public interface IMatrixEvent<out T> where T : MatrixEventContent;
+public class MatrixEvent<T> : IMatrixEvent<T> where T : MatrixEventContent {
+ [JsonPropertyName("content")]
+ public T? Content { get; set; }
+}
\ No newline at end of file
diff --git a/LibMatrix.EventTypes/MatrixEventCollection.cs b/LibMatrix.EventTypes/MatrixEventCollection.cs
new file mode 100644
index 0000000..35afd2b
--- /dev/null
+++ b/LibMatrix.EventTypes/MatrixEventCollection.cs
@@ -0,0 +1,71 @@
+using System.Collections;
+
+namespace LibMatrix.EventTypes;
+
+public interface IMatrixEventCollection<out T> : IEnumerable<IMatrixEvent<T>> where T : MatrixEventContent {
+
+}
+public class MatrixEventCollection : IMatrixEventCollection<MatrixEventContent>, IList<MatrixEvent<MatrixEventContent> {
+ private IList<MatrixEvent<MatrixEventContent>> _listImplementation;
+ public IEnumerator<MatrixEvent<MatrixEventContent>> GetEnumerator() => _listImplementation.GetEnumerator();
+
+ IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)_listImplementation).GetEnumerator();
+
+ public void Add(MatrixEvent<MatrixEventContent> item) => _listImplementation.Add(item);
+
+ public void Clear() => _listImplementation.Clear();
+
+ public bool Contains(MatrixEvent<MatrixEventContent> item) => _listImplementation.Contains(item);
+
+ public void CopyTo(MatrixEvent<MatrixEventContent>[] array, int arrayIndex) => _listImplementation.CopyTo(array, arrayIndex);
+
+ public bool Remove(MatrixEvent<MatrixEventContent> item) => _listImplementation.Remove(item);
+
+ public int Count => _listImplementation.Count;
+
+ public bool IsReadOnly => _listImplementation.IsReadOnly;
+
+ public int IndexOf(MatrixEvent<MatrixEventContent> item) => _listImplementation.IndexOf(item);
+
+ public void Insert(int index, MatrixEvent<MatrixEventContent> item) => _listImplementation.Insert(index, item);
+
+ public void RemoveAt(int index) => _listImplementation.RemoveAt(index);
+
+ public MatrixEvent<MatrixEventContent> this[int index] {
+ get => _listImplementation[index];
+ set => _listImplementation[index] = value;
+ }
+}
+public class MatrixEventCollection<T> : IMatrixEventCollection<T>, IList<MatrixEvent<T>> where T : MatrixEventContent {
+ //TODO: implement
+
+ private IList<MatrixEvent<T>> _listImplementation = new List<MatrixEvent<T>>();
+ public IEnumerator<MatrixEvent<T>> GetEnumerator() => _listImplementation.GetEnumerator();
+
+ IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)_listImplementation).GetEnumerator();
+
+ public void Add(MatrixEvent<T> item) => _listImplementation.Add(item);
+
+ public void Clear() => _listImplementation.Clear();
+
+ public bool Contains(MatrixEvent<T> item) => _listImplementation.Contains(item);
+
+ public void CopyTo(MatrixEvent<T>[] array, int arrayIndex) => _listImplementation.CopyTo(array, arrayIndex);
+
+ public bool Remove(MatrixEvent<T> item) => _listImplementation.Remove(item);
+
+ public int Count => _listImplementation.Count;
+
+ public bool IsReadOnly => _listImplementation.IsReadOnly;
+
+ public int IndexOf(MatrixEvent<T> item) => _listImplementation.IndexOf(item);
+
+ public void Insert(int index, MatrixEvent<T> item) => _listImplementation.Insert(index, item);
+
+ public void RemoveAt(int index) => _listImplementation.RemoveAt(index);
+
+ public MatrixEvent<T> this[int index] {
+ get => _listImplementation[index];
+ set => _listImplementation[index] = value;
+ }
+}
\ No newline at end of file
diff --git a/LibMatrix.EventTypes/MatrixEventContent.cs b/LibMatrix.EventTypes/MatrixEventContent.cs
new file mode 100644
index 0000000..c30ebb0
--- /dev/null
+++ b/LibMatrix.EventTypes/MatrixEventContent.cs
@@ -0,0 +1,26 @@
+using System.Text.Json;
+using System.Text.Json.Nodes;
+using System.Text.Json.Serialization;
+
+namespace LibMatrix.EventTypes;
+
+/// <summary>
+/// Extensible Event Content, aims to provide an API similar to JsonNode/JsonObject
+/// <seealso cref="System.Text.Json.Nodes.JsonNode"/>
+/// <seealso cref="System.Text.Json.Nodes.JsonObject"/>
+/// </summary>
+public class MatrixEventContent {
+ // <T> : MatrixEventContent where T : MatrixEventContent<T>, new() {
+ internal JsonNode _json = new JsonObject();
+
+ public static implicit operator MatrixEventContent(JsonNode json) => new(json);
+
+ [JsonConstructor]
+ public MatrixEventContent(JsonNode json) {
+ _json = json;
+ }
+
+ public MatrixEventContent() { }
+
+ public JsonNode? this[string key] => _json[key];
+}
\ No newline at end of file
diff --git a/LibMatrix.EventTypes/temp/Temp.cs b/LibMatrix.EventTypes/temp/Temp.cs
new file mode 100644
index 0000000..3fbb401
--- /dev/null
+++ b/LibMatrix.EventTypes/temp/Temp.cs
@@ -0,0 +1,17 @@
+using LibMatrix.EventTypes.Events;
+
+namespace LibMatrix.EventTypes.temp;
+
+// public class Temp {
+// public MatrixEventCollection<MatrixEventContent> Members = [
+// new MatrixEvent<RoomMembershipEventContent>() {
+// Content = new() {
+// Membership = "join"
+// }
+// }
+// ];
+//
+// public void a() {
+//
+// }
+// }
\ No newline at end of file
diff --git a/LibMatrix.sln b/LibMatrix.sln
index 257a8f2..df24832 100644
--- a/LibMatrix.sln
+++ b/LibMatrix.sln
@@ -39,6 +39,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMatrix.HomeserverEmulato
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMatrix.EventTypes", "LibMatrix.EventTypes\LibMatrix.EventTypes.csproj", "{E9E9567D-58F4-4E17-BBC1-D4746C2526DB}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApp1", "ConsoleApp1\ConsoleApp1.csproj", "{6254A2BA-279F-49F7-B3F3-675397F0F644}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -104,6 +106,10 @@ Global
{E9E9567D-58F4-4E17-BBC1-D4746C2526DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E9E9567D-58F4-4E17-BBC1-D4746C2526DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E9E9567D-58F4-4E17-BBC1-D4746C2526DB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6254A2BA-279F-49F7-B3F3-675397F0F644}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6254A2BA-279F-49F7-B3F3-675397F0F644}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6254A2BA-279F-49F7-B3F3-675397F0F644}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6254A2BA-279F-49F7-B3F3-675397F0F644}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{1B1B2197-61FB-416F-B6C8-845F2E5A0442} = {840309F0-435B-43A7-8471-8C2BE643889D}
diff --git a/LibMatrix.sln.DotSettings.user b/LibMatrix.sln.DotSettings.user
index ec6bdc7..c5570e2 100644
--- a/LibMatrix.sln.DotSettings.user
+++ b/LibMatrix.sln.DotSettings.user
@@ -4,5 +4,9 @@
<s:String x:Key="/Default/Environment/AssemblyExplorer/XmlDocument/@EntryValue"><AssemblyExplorer>
<Assembly Path="/home/root@Rory/.cache/NuGetPackages/microsoft.extensions.hosting.abstractions/7.0.0/lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.dll" />
</AssemblyExplorer></s:String>
+ <s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=1b1b2197_002D61fb_002D416f_002Db6c8_002D845f2e5a0442_0023LibMatrix_002EExampleBot/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=345934ff_002Dca81_002D4a4b_002Db137_002D9f198102c65f_0023LibMatrix_002ETests/@EntryIndexedValue">True</s:Boolean>
- <s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=d44db78d_002D9bad_002D4ab6_002Da054_002D839eca9d68d2_0023LibMatrix_002EHomeserverEmulator/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
\ No newline at end of file
+ <s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=35df9a1a_002Dd988_002D4225_002Dafa3_002D06bb8edeb559_0023LibMatrix_002EDebugDataValidationApi/@EntryIndexedValue">True</s:Boolean>
+ <s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=8f0a820e_002Df6ae_002D45a2_002D970e_002D7a3759693919_0023ModerationBot/@EntryIndexedValue">True</s:Boolean>
+ <s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=d44db78d_002D9bad_002D4ab6_002Da054_002D839eca9d68d2_0023LibMatrix_002EHomeserverEmulator/@EntryIndexedValue">True</s:Boolean>
+ <s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=fb8fe4eb_002Db53b_002D464b_002Da5fd_002D9bf9d0f3ef9b_0023PluralContactBotPoC/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
\ No newline at end of file
diff --git a/LibMatrix/Extensions/EnumerableExtensions.cs b/LibMatrix/Extensions/EnumerableExtensions.cs
index b5193ab..7a810ac 100644
--- a/LibMatrix/Extensions/EnumerableExtensions.cs
+++ b/LibMatrix/Extensions/EnumerableExtensions.cs
@@ -1,6 +1,7 @@
namespace LibMatrix.Extensions;
public static class EnumerableExtensions {
+#if !DISABLE_LEGACY_EVENTS
public static void MergeStateEventLists(this IList<LegacyMatrixEvent> oldState, IList<LegacyMatrixEvent> newState) {
foreach (var stateEvent in newState) {
var old = oldState.FirstOrDefault(x => x.Type == stateEvent.Type && x.StateKey == stateEvent.StateKey);
@@ -26,4 +27,5 @@ public static class EnumerableExtensions {
oldState.Add(stateEvent);
}
}
+#endif
}
\ No newline at end of file
diff --git a/LibMatrix/Filters/SyncFilter.cs b/LibMatrix/Filters/MatrixFilter.cs
index 787ffa7..08dc2fc 100644
--- a/LibMatrix/Filters/SyncFilter.cs
+++ b/LibMatrix/Filters/MatrixFilter.cs
@@ -2,7 +2,7 @@ using System.Text.Json.Serialization;
namespace LibMatrix.Filters;
-public class SyncFilter {
+public class MatrixFilter {
[JsonPropertyName("account_data")]
public EventFilter? AccountData { get; set; }
diff --git a/LibMatrix/Helpers/MessageBuilder.cs b/LibMatrix/Helpers/MessageBuilder.cs
index 0ed0339..43999b3 100644
--- a/LibMatrix/Helpers/MessageBuilder.cs
+++ b/LibMatrix/Helpers/MessageBuilder.cs
@@ -1,3 +1,4 @@
+#if !DISABLE_LEGACY_EVENTS
using LibMatrix.LegacyEvents.EventTypes.Spec;
namespace LibMatrix.Helpers;
@@ -118,4 +119,6 @@ public class MessageBuilder(string msgType = "m.text", string format = "org.matr
}
}
}
-}
\ No newline at end of file
+}
+
+#endif
\ No newline at end of file
diff --git a/LibMatrix/Helpers/SyncHelper.cs b/LibMatrix/Helpers/SyncHelper.cs
index 5635955..09bcf8e 100644
--- a/LibMatrix/Helpers/SyncHelper.cs
+++ b/LibMatrix/Helpers/SyncHelper.cs
@@ -9,7 +9,7 @@ using Microsoft.Extensions.Logging;
namespace LibMatrix.Helpers;
public class SyncHelper(AuthenticatedHomeserverGeneric homeserver, ILogger? logger = null) {
- private SyncFilter? _filter;
+ private MatrixFilter? _filter;
private string? _namedFilterName;
private bool _filterIsDirty = false;
private string? _filterId = null;
@@ -36,7 +36,7 @@ public class SyncHelper(AuthenticatedHomeserverGeneric homeserver, ILogger? logg
}
}
- public SyncFilter? Filter {
+ public MatrixFilter? Filter {
get => _filter;
set {
_filter = value;
diff --git a/LibMatrix/Helpers/SyncStateResolver.cs b/LibMatrix/Helpers/SyncStateResolver.cs
index b1f83ff..511819a 100644
--- a/LibMatrix/Helpers/SyncStateResolver.cs
+++ b/LibMatrix/Helpers/SyncStateResolver.cs
@@ -10,7 +10,7 @@ public class SyncStateResolver(AuthenticatedHomeserverGeneric homeserver, ILogge
public string? Since { get; set; }
public int Timeout { get; set; } = 30000;
public string? SetPresence { get; set; } = "online";
- public SyncFilter? Filter { get; set; }
+ public MatrixFilter? Filter { get; set; }
public bool FullState { get; set; } = false;
public SyncResponse? MergedState { get; set; }
diff --git a/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs b/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs
index db76985..96e20e0 100644
--- a/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs
+++ b/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs
@@ -192,8 +192,8 @@ public class AuthenticatedHomeserverGeneric : RemoteHomeserver {
var oldProfile = await GetProfileAsync(WhoAmI.UserId!);
Dictionary<string, RoomMemberLegacyEventContent> expectedRoomProfiles = new();
var syncHelper = new SyncHelper(this) {
- Filter = new SyncFilter {
- AccountData = new SyncFilter.EventFilter() {
+ Filter = new MatrixFilter {
+ AccountData = new MatrixFilter.EventFilter() {
Types = new List<string> {
"m.room.member"
}
@@ -312,7 +312,7 @@ public class AuthenticatedHomeserverGeneric : RemoteHomeserver {
/// <param name="filter"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
- public async Task<FilterIdResponse> UploadFilterAsync(SyncFilter filter) {
+ public async Task<FilterIdResponse> UploadFilterAsync(MatrixFilter filter) {
List<List<string>?> senderLists = [
filter.AccountData?.Senders,
filter.AccountData?.NotSenders,
@@ -338,10 +338,10 @@ public class AuthenticatedHomeserverGeneric : RemoteHomeserver {
return await resp.Content.ReadFromJsonAsync<FilterIdResponse>() ?? throw new Exception("Failed to upload filter?");
}
- public async Task<SyncFilter> GetFilterAsync(string filterId) {
+ public async Task<MatrixFilter> GetFilterAsync(string filterId) {
if (_filterCache.TryGetValue(filterId, out var filter)) return filter;
var resp = await ClientHttpClient.GetAsync("/_matrix/client/v3/user/" + UserId + "/filter/" + filterId);
- return _filterCache[filterId] = await resp.Content.ReadFromJsonAsync<SyncFilter>() ?? throw new Exception("Failed to get filter?");
+ return _filterCache[filterId] = await resp.Content.ReadFromJsonAsync<MatrixFilter>() ?? throw new Exception("Failed to get filter?");
}
public class FilterIdResponse {
@@ -385,7 +385,7 @@ public class AuthenticatedHomeserverGeneric : RemoteHomeserver {
}
private Dictionary<string, string>? _namedFilterCache;
- private Dictionary<string, SyncFilter> _filterCache = new();
+ private Dictionary<string, MatrixFilter> _filterCache = new();
public async Task<JsonObject?> GetCapabilitiesAsync() {
var res = await ClientHttpClient.GetAsync("/_matrix/client/v3/capabilities");
diff --git a/LibMatrix/Homeservers/Extensions/NamedCaches/NamedFilterCache.cs b/LibMatrix/Homeservers/Extensions/NamedCaches/NamedFilterCache.cs
index 76533a4..551ac39 100644
--- a/LibMatrix/Homeservers/Extensions/NamedCaches/NamedFilterCache.cs
+++ b/LibMatrix/Homeservers/Extensions/NamedCaches/NamedFilterCache.cs
@@ -13,7 +13,7 @@ public class NamedFilterCache(AuthenticatedHomeserverGeneric hs) : NamedCache<st
/// <param name="filter">Filter to upload if not cached, otherwise defaults to common filters if that exists.</param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
- public async Task<string> GetOrSetValueAsync(string key, SyncFilter? filter = null) {
+ public async Task<string> GetOrSetValueAsync(string key, MatrixFilter? filter = null) {
var existingValue = await GetValueAsync(key);
if (existingValue != null) {
return existingValue;
diff --git a/LibMatrix/LegacyMatrixEvent.cs b/LibMatrix/LegacyMatrixEvent.cs
index 5433da3..a1ac5db 100644
--- a/LibMatrix/LegacyMatrixEvent.cs
+++ b/LibMatrix/LegacyMatrixEvent.cs
@@ -1,3 +1,4 @@
+#if !DISABLE_LEGACY_EVENTS
using System.Collections.Frozen;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
@@ -222,4 +223,5 @@ public class StateEventContentPolymorphicTypeInfoResolver : DefaultJsonTypeInfoR
}
*/
-#endregion
\ No newline at end of file
+#endregion
+#endif
\ No newline at end of file
diff --git a/LibMatrix/LibMatrix.csproj b/LibMatrix/LibMatrix.csproj
index 42ef17d..69f2bf4 100644
--- a/LibMatrix/LibMatrix.csproj
+++ b/LibMatrix/LibMatrix.csproj
@@ -8,6 +8,10 @@
<Optimize>true</Optimize>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
+
+ <!-- event rewrite dev... -->
+ <DefineConstants Condition="!$(ExtraDefineConstants.Contains('WITH_LEGACY_EVENTS'))">$(DefineConstants);DISABLE_LEGACY_EVENTS</DefineConstants>
+ <DefineConstants Condition=" '$(ExtraDefineConstants)' != '' ">$(DefineConstants);$(ExtraDefineConstants)</DefineConstants>
</PropertyGroup>
<ItemGroup>
diff --git a/LibMatrix/RoomTypes/GenericRoom.cs b/LibMatrix/RoomTypes/GenericRoom.cs
index 8fa46d3..aafe29f 100644
--- a/LibMatrix/RoomTypes/GenericRoom.cs
+++ b/LibMatrix/RoomTypes/GenericRoom.cs
@@ -105,16 +105,16 @@ public class GenericRoom {
if (!fallbackToSync) throw;
Console.WriteLine("WARNING: Homeserver does not support getting event ID from state events, falling back to sync");
var sh = new SyncHelper(Homeserver);
- var emptyFilter = new SyncFilter.EventFilter(types: [], limit: 1, senders: [], notTypes: ["*"]);
- var emptyStateFilter = new SyncFilter.RoomFilter.StateFilter(types: [], limit: 1, senders: [], notTypes: ["*"], rooms:[]);
+ var emptyFilter = new MatrixFilter.EventFilter(types: [], limit: 1, senders: [], notTypes: ["*"]);
+ var emptyStateFilter = new MatrixFilter.RoomFilter.StateFilter(types: [], limit: 1, senders: [], notTypes: ["*"], rooms:[]);
sh.Filter = new() {
Presence = emptyFilter,
AccountData = emptyFilter,
- Room = new SyncFilter.RoomFilter() {
+ Room = new MatrixFilter.RoomFilter() {
AccountData = emptyStateFilter,
Timeline = emptyStateFilter,
Ephemeral = emptyStateFilter,
- State = new SyncFilter.RoomFilter.StateFilter(),
+ State = new MatrixFilter.RoomFilter.StateFilter(),
Rooms = [RoomId]
}
};
diff --git a/LibMatrix/Utilities/CommonSyncFilters.cs b/LibMatrix/Utilities/CommonSyncFilters.cs
index d07c225..68836f5 100644
--- a/LibMatrix/Utilities/CommonSyncFilters.cs
+++ b/LibMatrix/Utilities/CommonSyncFilters.cs
@@ -13,29 +13,29 @@ public static class CommonSyncFilters {
public const string GetSpaceRelations = "gay.rory.matrixutils.get_space_relations.v0";
public const string GetOwnMemberEvents = "gay.rory.matrixutils.get_own_member_events.v0";
- public static SyncFilter GetAccountDataFilter => new() {
- Presence = new SyncFilter.EventFilter(notTypes: ["*"]),
- Room = new SyncFilter.RoomFilter() {
+ public static MatrixFilter GetAccountDataFilter => new() {
+ Presence = new MatrixFilter.EventFilter(notTypes: ["*"]),
+ Room = new MatrixFilter.RoomFilter() {
Rooms = []
}
};
- public static SyncFilter GetAccountDataWithRoomsFilter => new() {
- Presence = new SyncFilter.EventFilter(notTypes: ["*"]),
- Room = new SyncFilter.RoomFilter() {
- State = new SyncFilter.RoomFilter.StateFilter(notTypes: ["*"]),
- Ephemeral = new SyncFilter.RoomFilter.StateFilter(notTypes: ["*"]),
- Timeline = new SyncFilter.RoomFilter.StateFilter(notTypes: ["*"])
+ public static MatrixFilter GetAccountDataWithRoomsFilter => new() {
+ Presence = new MatrixFilter.EventFilter(notTypes: ["*"]),
+ Room = new MatrixFilter.RoomFilter() {
+ State = new MatrixFilter.RoomFilter.StateFilter(notTypes: ["*"]),
+ Ephemeral = new MatrixFilter.RoomFilter.StateFilter(notTypes: ["*"]),
+ Timeline = new MatrixFilter.RoomFilter.StateFilter(notTypes: ["*"])
}
};
- public static SyncFilter GetBasicRoomDataFilter => new() {
- AccountData = new SyncFilter.EventFilter(notTypes: ["*"], limit: 1),
- Presence = new SyncFilter.EventFilter(notTypes: ["*"], limit: 1),
- Room = new SyncFilter.RoomFilter {
- AccountData = new SyncFilter.RoomFilter.StateFilter(rooms: []),
- Ephemeral = new SyncFilter.RoomFilter.StateFilter(rooms: []),
- State = new SyncFilter.RoomFilter.StateFilter {
+ public static MatrixFilter GetBasicRoomDataFilter => new() {
+ AccountData = new MatrixFilter.EventFilter(notTypes: ["*"], limit: 1),
+ Presence = new MatrixFilter.EventFilter(notTypes: ["*"], limit: 1),
+ Room = new MatrixFilter.RoomFilter {
+ AccountData = new MatrixFilter.RoomFilter.StateFilter(rooms: []),
+ Ephemeral = new MatrixFilter.RoomFilter.StateFilter(rooms: []),
+ State = new MatrixFilter.RoomFilter.StateFilter {
Types = new List<string> {
RoomCreateLegacyEventContent.EventId,
RoomNameLegacyEventContent.EventId,
@@ -45,46 +45,46 @@ public static class CommonSyncFilters {
},
LazyLoadMembers = true, IncludeRedundantMembers = false
},
- Timeline = new SyncFilter.RoomFilter.StateFilter(rooms: [])
+ Timeline = new MatrixFilter.RoomFilter.StateFilter(rooms: [])
}
};
- public static SyncFilter GetSpaceRelationsFilter => new() {
- AccountData = new SyncFilter.EventFilter(notTypes: ["*"], limit: 1),
- Presence = new SyncFilter.EventFilter(notTypes: ["*"], limit: 1),
- Room = new SyncFilter.RoomFilter {
- AccountData = new SyncFilter.RoomFilter.StateFilter(rooms: []),
- Ephemeral = new SyncFilter.RoomFilter.StateFilter(rooms: []),
- State = new SyncFilter.RoomFilter.StateFilter {
+ public static MatrixFilter GetSpaceRelationsFilter => new() {
+ AccountData = new MatrixFilter.EventFilter(notTypes: ["*"], limit: 1),
+ Presence = new MatrixFilter.EventFilter(notTypes: ["*"], limit: 1),
+ Room = new MatrixFilter.RoomFilter {
+ AccountData = new MatrixFilter.RoomFilter.StateFilter(rooms: []),
+ Ephemeral = new MatrixFilter.RoomFilter.StateFilter(rooms: []),
+ State = new MatrixFilter.RoomFilter.StateFilter {
Types = new List<string> {
SpaceChildLegacyEventContent.EventId,
SpaceParentLegacyEventContent.EventId
},
LazyLoadMembers = true, IncludeRedundantMembers = false
},
- Timeline = new SyncFilter.RoomFilter.StateFilter(rooms: [])
+ Timeline = new MatrixFilter.RoomFilter.StateFilter(rooms: [])
}
};
- public static SyncFilter GetOwnMemberEventsFilter => new() {
- AccountData = new SyncFilter.EventFilter(types: ["m.room.member"], limit: 1),
- Presence = new SyncFilter.EventFilter(notTypes: ["*"], limit: 1),
- Room = new SyncFilter.RoomFilter {
- AccountData = new SyncFilter.RoomFilter.StateFilter(rooms: []),
- Ephemeral = new SyncFilter.RoomFilter.StateFilter(rooms: []),
- State = new SyncFilter.RoomFilter.StateFilter {
+ public static MatrixFilter GetOwnMemberEventsFilter => new() {
+ AccountData = new MatrixFilter.EventFilter(types: ["m.room.member"], limit: 1),
+ Presence = new MatrixFilter.EventFilter(notTypes: ["*"], limit: 1),
+ Room = new MatrixFilter.RoomFilter {
+ AccountData = new MatrixFilter.RoomFilter.StateFilter(rooms: []),
+ Ephemeral = new MatrixFilter.RoomFilter.StateFilter(rooms: []),
+ State = new MatrixFilter.RoomFilter.StateFilter {
Types = new List<string> {
RoomMemberLegacyEventContent.EventId
},
LazyLoadMembers = true, IncludeRedundantMembers = false,
Senders = ["@me"]
},
- Timeline = new SyncFilter.RoomFilter.StateFilter(rooms: [])
+ Timeline = new MatrixFilter.RoomFilter.StateFilter(rooms: [])
}
};
// This must be down here, due to statics load order
- public static FrozenDictionary<string, SyncFilter> FilterMap => new Dictionary<string, SyncFilter>() {
+ public static FrozenDictionary<string, MatrixFilter> FilterMap => new Dictionary<string, MatrixFilter>() {
[GetAccountData] = GetAccountDataFilter,
[GetAccountDataWithRooms] = GetAccountDataWithRoomsFilter,
[GetBasicRoomInfo] = GetBasicRoomDataFilter,
diff --git a/LibMatrix/Extensions/JsonElementExtensions.cs b/Utilities/LibMatrix.DebugDataValidationApi/JsonElementExtensions.cs
index a2faddc..a2faddc 100644
--- a/LibMatrix/Extensions/JsonElementExtensions.cs
+++ b/Utilities/LibMatrix.DebugDataValidationApi/JsonElementExtensions.cs
diff --git a/Utilities/LibMatrix.DebugDataValidationApi/LibMatrix.DebugDataValidationApi.csproj b/Utilities/LibMatrix.DebugDataValidationApi/LibMatrix.DebugDataValidationApi.csproj
index 24fd617..ef8f443 100644
--- a/Utilities/LibMatrix.DebugDataValidationApi/LibMatrix.DebugDataValidationApi.csproj
+++ b/Utilities/LibMatrix.DebugDataValidationApi/LibMatrix.DebugDataValidationApi.csproj
@@ -14,7 +14,9 @@
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\..\LibMatrix\LibMatrix.csproj"/>
+ <ProjectReference Include="..\..\LibMatrix\LibMatrix.csproj">
+ <Properties>ExtraDefineConstants=WITH_LEGACY_EVENTS</Properties>
+ </ProjectReference>
</ItemGroup>
</Project>
diff --git a/Utilities/LibMatrix.Utilities.Bot/Services/CommandListenerHostedService.cs b/Utilities/LibMatrix.Utilities.Bot/Services/CommandListenerHostedService.cs
index 46638e4..45118b3 100644
--- a/Utilities/LibMatrix.Utilities.Bot/Services/CommandListenerHostedService.cs
+++ b/Utilities/LibMatrix.Utilities.Bot/Services/CommandListenerHostedService.cs
@@ -41,14 +41,14 @@ public class CommandListenerHostedService : IHostedService {
private async Task? Run(CancellationToken cancellationToken) {
_logger.LogInformation("Starting command listener!");
- var filter = await _hs.NamedCaches.FilterCache.GetOrSetValueAsync("gay.rory.libmatrix.utilities.bot.command_listener_syncfilter.dev2", new SyncFilter() {
- AccountData = new SyncFilter.EventFilter(notTypes: ["*"], limit: 1),
- Presence = new SyncFilter.EventFilter(notTypes: ["*"]),
- Room = new SyncFilter.RoomFilter() {
- AccountData = new SyncFilter.RoomFilter.StateFilter(notTypes: ["*"]),
- Ephemeral = new SyncFilter.RoomFilter.StateFilter(notTypes: ["*"]),
- State = new SyncFilter.RoomFilter.StateFilter(notTypes: ["*"]),
- Timeline = new SyncFilter.RoomFilter.StateFilter(types: ["m.room.message"], notSenders: [_hs.WhoAmI.UserId]),
+ var filter = await _hs.NamedCaches.FilterCache.GetOrSetValueAsync("gay.rory.libmatrix.utilities.bot.command_listener_syncfilter.dev2", new MatrixFilter() {
+ AccountData = new MatrixFilter.EventFilter(notTypes: ["*"], limit: 1),
+ Presence = new MatrixFilter.EventFilter(notTypes: ["*"]),
+ Room = new MatrixFilter.RoomFilter() {
+ AccountData = new MatrixFilter.RoomFilter.StateFilter(notTypes: ["*"]),
+ Ephemeral = new MatrixFilter.RoomFilter.StateFilter(notTypes: ["*"]),
+ State = new MatrixFilter.RoomFilter.StateFilter(notTypes: ["*"]),
+ Timeline = new MatrixFilter.RoomFilter.StateFilter(types: ["m.room.message"], notSenders: [_hs.WhoAmI.UserId]),
}
});
diff --git a/Utilities/LibMatrix.Utilities.Bot/Services/InviteListenerHostedService.cs b/Utilities/LibMatrix.Utilities.Bot/Services/InviteListenerHostedService.cs
index c2aed04..b49a8e3 100644
--- a/Utilities/LibMatrix.Utilities.Bot/Services/InviteListenerHostedService.cs
+++ b/Utilities/LibMatrix.Utilities.Bot/Services/InviteListenerHostedService.cs
@@ -31,14 +31,14 @@ public class InviteHandlerHostedService : IHostedService {
private async Task? Run(CancellationToken cancellationToken) {
_logger.LogInformation("Starting invite listener!");
- var filter = await _hs.NamedCaches.FilterCache.GetOrSetValueAsync("gay.rory.libmatrix.utilities.bot.command_listener_syncfilter.dev2", new SyncFilter() {
- AccountData = new SyncFilter.EventFilter(notTypes: ["*"], limit: 1),
- Presence = new SyncFilter.EventFilter(notTypes: ["*"]),
- Room = new SyncFilter.RoomFilter() {
- AccountData = new SyncFilter.RoomFilter.StateFilter(notTypes: ["*"]),
- Ephemeral = new SyncFilter.RoomFilter.StateFilter(notTypes: ["*"]),
- State = new SyncFilter.RoomFilter.StateFilter(notTypes: ["*"]),
- Timeline = new SyncFilter.RoomFilter.StateFilter(types: ["m.room.message"], notSenders: [_hs.WhoAmI.UserId]),
+ var filter = await _hs.NamedCaches.FilterCache.GetOrSetValueAsync("gay.rory.libmatrix.utilities.bot.command_listener_syncfilter.dev2", new MatrixFilter() {
+ AccountData = new MatrixFilter.EventFilter(notTypes: ["*"], limit: 1),
+ Presence = new MatrixFilter.EventFilter(notTypes: ["*"]),
+ Room = new MatrixFilter.RoomFilter() {
+ AccountData = new MatrixFilter.RoomFilter.StateFilter(notTypes: ["*"]),
+ Ephemeral = new MatrixFilter.RoomFilter.StateFilter(notTypes: ["*"]),
+ State = new MatrixFilter.RoomFilter.StateFilter(notTypes: ["*"]),
+ Timeline = new MatrixFilter.RoomFilter.StateFilter(types: ["m.room.message"], notSenders: [_hs.WhoAmI.UserId]),
}
});
|