about summary refs log tree commit diff
path: root/LibMatrix
diff options
context:
space:
mode:
Diffstat (limited to 'LibMatrix')
-rw-r--r--LibMatrix/Helpers/MessageBuilder.cs4
-rw-r--r--LibMatrix/Helpers/MessageFormatter.cs18
-rw-r--r--LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs12
-rw-r--r--LibMatrix/LegacyMatrixEvent.cs14
-rw-r--r--LibMatrix/Responses/CreateRoomRequest.cs16
-rw-r--r--LibMatrix/RoomTypes/GenericRoom.cs48
-rw-r--r--LibMatrix/Utilities/CommonSyncFilters.cs16
7 files changed, 64 insertions, 64 deletions
diff --git a/LibMatrix/Helpers/MessageBuilder.cs b/LibMatrix/Helpers/MessageBuilder.cs

index 54de7ad..0ed0339 100644 --- a/LibMatrix/Helpers/MessageBuilder.cs +++ b/LibMatrix/Helpers/MessageBuilder.cs
@@ -3,12 +3,12 @@ using LibMatrix.LegacyEvents.EventTypes.Spec; namespace LibMatrix.Helpers; public class MessageBuilder(string msgType = "m.text", string format = "org.matrix.custom.html") { - private RoomMessageEventContent Content { get; set; } = new() { + private RoomMessageLegacyEventContent Content { get; set; } = new() { MessageType = msgType, Format = format }; - public RoomMessageEventContent Build() => Content; + public RoomMessageLegacyEventContent Build() => Content; public MessageBuilder WithBody(string body) { Content.Body += body; diff --git a/LibMatrix/Helpers/MessageFormatter.cs b/LibMatrix/Helpers/MessageFormatter.cs
index f234d8f..2c5021e 100644 --- a/LibMatrix/Helpers/MessageFormatter.cs +++ b/LibMatrix/Helpers/MessageFormatter.cs
@@ -4,25 +4,25 @@ using LibMatrix.LegacyEvents.EventTypes.Spec; namespace LibMatrix.Helpers; public static class MessageFormatter { - public static RoomMessageEventContent FormatError(string error) => + public static RoomMessageLegacyEventContent FormatError(string error) => new(body: error, messageType: "m.text") { FormattedBody = $"<font color=\"#EE4444\">{error}</font>", Format = "org.matrix.custom.html" }; - public static RoomMessageEventContent FormatException(string error, Exception e) => + public static RoomMessageLegacyEventContent FormatException(string error, Exception e) => new(body: $"{error}: {e.Message}", messageType: "m.text") { FormattedBody = $"<font color=\"#EE4444\">{error}: <pre><code>{e.Message}</code></pre></font>", Format = "org.matrix.custom.html" }; - public static RoomMessageEventContent FormatSuccess(string text) => + public static RoomMessageLegacyEventContent FormatSuccess(string text) => new(body: text, messageType: "m.text") { FormattedBody = $"<font color=\"#00FF00\">{text}</font>", Format = "org.matrix.custom.html" }; - public static RoomMessageEventContent FormatSuccessJson(string text, object data) => + public static RoomMessageLegacyEventContent FormatSuccessJson(string text, object data) => new(body: text, messageType: "m.text") { FormattedBody = $"<font color=\"#00FF00\">{text}: <pre><code>{data.ToJson(ignoreNull: true)}</code></pre></font>", Format = "org.matrix.custom.html" @@ -37,29 +37,29 @@ public static class MessageFormatter { #region Extension functions - public static RoomMessageEventContent ToMatrixMessage(this Exception e, string error) => FormatException(error, e); + public static RoomMessageLegacyEventContent ToMatrixMessage(this Exception e, string error) => FormatException(error, e); #endregion - public static RoomMessageEventContent FormatWarning(string warning) => + public static RoomMessageLegacyEventContent FormatWarning(string warning) => new(body: warning, messageType: "m.text") { FormattedBody = $"<font color=\"#FFFF00\">{warning}</font>", Format = "org.matrix.custom.html" }; - public static RoomMessageEventContent FormatWarningJson(string warning, object data) => + public static RoomMessageLegacyEventContent FormatWarningJson(string warning, object data) => new(body: warning, messageType: "m.text") { FormattedBody = $"<font color=\"#FFFF00\">{warning}: <pre><code>{data.ToJson(ignoreNull: true)}</code></pre></font>", Format = "org.matrix.custom.html" }; - public static RoomMessageEventContent Concat(this RoomMessageEventContent a, RoomMessageEventContent b) => + public static RoomMessageLegacyEventContent Concat(this RoomMessageLegacyEventContent a, RoomMessageLegacyEventContent b) => new(body: $"{a.Body}{b.Body}", messageType: a.MessageType) { FormattedBody = $"{a.FormattedBody}{b.FormattedBody}", Format = a.Format }; - public static RoomMessageEventContent ConcatLine(this RoomMessageEventContent a, RoomMessageEventContent b) => + public static RoomMessageLegacyEventContent ConcatLine(this RoomMessageLegacyEventContent a, RoomMessageLegacyEventContent b) => new(body: $"{a.Body}\n{b.Body}", messageType: "m.text") { FormattedBody = $"{a.FormattedBody}<br/>{b.FormattedBody}", Format = "org.matrix.custom.html" diff --git a/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs b/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs
index 86977ec..db76985 100644 --- a/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs +++ b/LibMatrix/Homeservers/AuthenticatedHomeserverGeneric.cs
@@ -190,7 +190,7 @@ public class AuthenticatedHomeserverGeneric : RemoteHomeserver { if (newProfile is null) return; Console.WriteLine($"Updating profile for {WhoAmI.UserId} to {newProfile.ToJson(ignoreNull: true)} (preserving room profiles: {preserveCustomRoomProfile})"); var oldProfile = await GetProfileAsync(WhoAmI.UserId!); - Dictionary<string, RoomMemberEventContent> expectedRoomProfiles = new(); + Dictionary<string, RoomMemberLegacyEventContent> expectedRoomProfiles = new(); var syncHelper = new SyncHelper(this) { Filter = new SyncFilter { AccountData = new SyncFilter.EventFilter() { @@ -209,7 +209,7 @@ public class AuthenticatedHomeserverGeneric : RemoteHomeserver { targetSyncCount = rooms.Count; await foreach (var (roomId, currentRoomProfile) in roomProfiles) try { - // var currentRoomProfile = await room.GetStateAsync<RoomMemberEventContent>("m.room.member", WhoAmI.UserId!); + // var currentRoomProfile = await room.GetStateAsync<RoomMemberLegacyEventContent>("m.room.member", WhoAmI.UserId!); //build new profiles if (currentRoomProfile.DisplayName == oldProfile.DisplayName) currentRoomProfile.DisplayName = newProfile.DisplayName; @@ -243,7 +243,7 @@ public class AuthenticatedHomeserverGeneric : RemoteHomeserver { foreach (var (roomId, roomData) in sync.Rooms.Join) if (roomData.State is { Events.Count: > 0 }) { var incommingRoomProfile = - roomData.State?.Events?.FirstOrDefault(x => x.Type == "m.room.member" && x.StateKey == WhoAmI.UserId)?.TypedContent as RoomMemberEventContent; + roomData.State?.Events?.FirstOrDefault(x => x.Type == "m.room.member" && x.StateKey == WhoAmI.UserId)?.TypedContent as RoomMemberLegacyEventContent; if (incommingRoomProfile is null) continue; if (!expectedRoomProfiles.ContainsKey(roomId)) continue; var targetRoomProfileOverride = expectedRoomProfiles[roomId]; @@ -276,7 +276,7 @@ public class AuthenticatedHomeserverGeneric : RemoteHomeserver { } } - public async IAsyncEnumerable<KeyValuePair<string, RoomMemberEventContent>> GetRoomProfilesAsync() { + public async IAsyncEnumerable<KeyValuePair<string, RoomMemberLegacyEventContent>> GetRoomProfilesAsync() { var rooms = await GetJoinedRooms(); var results = rooms.Select(GetOwnRoomProfileWithIdAsync).ToAsyncEnumerable(); await foreach (var res in results) yield return res; @@ -295,8 +295,8 @@ public class AuthenticatedHomeserverGeneric : RemoteHomeserver { #region Room Profile Utility - private async Task<KeyValuePair<string, RoomMemberEventContent>> GetOwnRoomProfileWithIdAsync(GenericRoom room) => - new(room.RoomId, await room.GetStateAsync<RoomMemberEventContent>("m.room.member", WhoAmI.UserId!)); + private async Task<KeyValuePair<string, RoomMemberLegacyEventContent>> GetOwnRoomProfileWithIdAsync(GenericRoom room) => + new(room.RoomId, await room.GetStateAsync<RoomMemberLegacyEventContent>("m.room.member", WhoAmI.UserId!)); #endregion diff --git a/LibMatrix/LegacyMatrixEvent.cs b/LibMatrix/LegacyMatrixEvent.cs
index 1c1ebf3..5433da3 100644 --- a/LibMatrix/LegacyMatrixEvent.cs +++ b/LibMatrix/LegacyMatrixEvent.cs
@@ -13,12 +13,12 @@ using LibMatrix.Extensions; namespace LibMatrix; public class LegacyMatrixEvent { - public static FrozenSet<Type> KnownStateEventTypes { get; } = new ClassCollector<EventContent>().ResolveFromAllAccessibleAssemblies().ToFrozenSet(); + public static FrozenSet<Type> KnownStateEventTypes { get; } = new ClassCollector<LegacyEventContent>().ResolveFromAllAccessibleAssemblies().ToFrozenSet(); public static FrozenDictionary<string, Type> KnownStateEventTypesByName { get; } = KnownStateEventTypes.Aggregate( new Dictionary<string, Type>(), (dict, type) => { - var attrs = type.GetCustomAttributes<MatrixEventAttribute>(); + var attrs = type.GetCustomAttributes<LegacyMatrixEventAttribute>(); foreach (var attr in attrs) { if (dict.TryGetValue(attr.EventName, out var existing)) Console.WriteLine($"Duplicate event type '{attr.EventName}' registered for types '{existing.Name}' and '{type.Name}'"); @@ -29,13 +29,13 @@ public class LegacyMatrixEvent { }).OrderBy(x => x.Key).ToFrozenDictionary(); public static Type GetStateEventType(string? type) => - string.IsNullOrWhiteSpace(type) ? typeof(UnknownEventContent) : KnownStateEventTypesByName.GetValueOrDefault(type) ?? typeof(UnknownEventContent); + string.IsNullOrWhiteSpace(type) ? typeof(UnknownLegacyEventContent) : KnownStateEventTypesByName.GetValueOrDefault(type) ?? typeof(UnknownLegacyEventContent); [JsonIgnore] public Type MappedType => GetStateEventType(Type); [JsonIgnore] - public bool IsLegacyType => MappedType.GetCustomAttributes<MatrixEventAttribute>().FirstOrDefault(x => x.EventName == Type)?.Legacy ?? false; + public bool IsLegacyType => MappedType.GetCustomAttributes<LegacyMatrixEventAttribute>().FirstOrDefault(x => x.EventName == Type)?.Legacy ?? false; [JsonIgnore] public string FriendlyTypeName => MappedType.GetFriendlyNameOrNull() ?? Type; @@ -53,16 +53,16 @@ public class LegacyMatrixEvent { [JsonIgnore] [SuppressMessage("ReSharper", "PropertyCanBeMadeInitOnly.Global")] - public EventContent? TypedContent { + public LegacyEventContent? TypedContent { get { // if (Type == "m.receipt") { // return null; // } try { var mappedType = GetStateEventType(Type); - if (mappedType == typeof(UnknownEventContent)) + if (mappedType == typeof(UnknownLegacyEventContent)) Console.WriteLine($"Warning: unknown event type '{Type}'"); - var deserialisedContent = (EventContent)RawContent.Deserialize(mappedType, TypedContentSerializerOptions)!; + var deserialisedContent = (LegacyEventContent)RawContent.Deserialize(mappedType, TypedContentSerializerOptions)!; return deserialisedContent; } catch (JsonException e) { diff --git a/LibMatrix/Responses/CreateRoomRequest.cs b/LibMatrix/Responses/CreateRoomRequest.cs
index 6919b84..cae2a04 100644 --- a/LibMatrix/Responses/CreateRoomRequest.cs +++ b/LibMatrix/Responses/CreateRoomRequest.cs
@@ -38,7 +38,7 @@ public class CreateRoomRequest { public string? Visibility { get; set; } [JsonPropertyName("power_level_content_override")] - public RoomPowerLevelEventContent? PowerLevelContentOverride { get; set; } = null!; + public RoomPowerLevelLegacyEventContent? PowerLevelContentOverride { get; set; } = null!; [JsonPropertyName("creation_content")] public JsonObject CreationContent { get; set; } = new(); @@ -57,10 +57,10 @@ public class CreateRoomRequest { InitialState.Add(stateEvent = new LegacyMatrixEvent { Type = eventType, StateKey = eventKey, - TypedContent = (EventContent)Activator.CreateInstance( + TypedContent = (LegacyEventContent)Activator.CreateInstance( LegacyMatrixEvent.KnownStateEventTypes.FirstOrDefault(x => - x.GetCustomAttributes<MatrixEventAttribute>()? - .Any(y => y.EventName == eventType) ?? false) ?? typeof(UnknownEventContent) + x.GetCustomAttributes<LegacyMatrixEventAttribute>()? + .Any(y => y.EventName == eventType) ?? false) ?? typeof(UnknownLegacyEventContent) )! }); @@ -89,7 +89,7 @@ public class CreateRoomRequest { Name = name ?? "New public Room", Visibility = "public", CreationContent = new JsonObject(), - PowerLevelContentOverride = new RoomPowerLevelEventContent { + PowerLevelContentOverride = new RoomPowerLevelLegacyEventContent { EventsDefault = 0, UsersDefault = 0, Kick = 50, @@ -97,7 +97,7 @@ public class CreateRoomRequest { Invite = 25, StateDefault = 10, Redact = 50, - NotificationsPl = new RoomPowerLevelEventContent.NotificationsPL { + NotificationsPl = new RoomPowerLevelLegacyEventContent.NotificationsPL { Room = 10 }, Events = new Dictionary<string, long> { @@ -129,7 +129,7 @@ public class CreateRoomRequest { Name = name ?? "New private Room", Visibility = "private", CreationContent = new JsonObject(), - PowerLevelContentOverride = new RoomPowerLevelEventContent { + PowerLevelContentOverride = new RoomPowerLevelLegacyEventContent { EventsDefault = 0, UsersDefault = 0, Kick = 50, @@ -137,7 +137,7 @@ public class CreateRoomRequest { Invite = 25, StateDefault = 10, Redact = 50, - NotificationsPl = new RoomPowerLevelEventContent.NotificationsPL { + NotificationsPl = new RoomPowerLevelLegacyEventContent.NotificationsPL { Room = 10 }, Events = new Dictionary<string, long> { diff --git a/LibMatrix/RoomTypes/GenericRoom.cs b/LibMatrix/RoomTypes/GenericRoom.cs
index 3ef2395..8fa46d3 100644 --- a/LibMatrix/RoomTypes/GenericRoom.cs +++ b/LibMatrix/RoomTypes/GenericRoom.cs
@@ -205,7 +205,7 @@ public class GenericRoom { Console.WriteLine("End of GetManyAsync"); } - public async Task<string?> GetNameAsync() => (await GetStateOrNullAsync<RoomNameEventContent>("m.room.name"))?.Name; + public async Task<string?> GetNameAsync() => (await GetStateOrNullAsync<RoomNameLegacyEventContent>("m.room.name"))?.Name; public async Task<RoomIdResponse> JoinAsync(string[]? homeservers = null, string? reason = null, bool checkIfAlreadyMember = true) { if (checkIfAlreadyMember) @@ -279,42 +279,42 @@ public class GenericRoom { #region Utility shortcuts - public Task<EventIdResponse> SendMessageEventAsync(RoomMessageEventContent content) => + public Task<EventIdResponse> SendMessageEventAsync(RoomMessageLegacyEventContent content) => SendTimelineEventAsync("m.room.message", content); public async Task<List<string>?> GetAliasesAsync() { - var res = await GetStateAsync<RoomAliasEventContent>("m.room.aliases"); + var res = await GetStateAsync<RoomAliasLegacyEventContent>("m.room.aliases"); return res.Aliases; } - public Task<RoomCanonicalAliasEventContent?> GetCanonicalAliasAsync() => - GetStateAsync<RoomCanonicalAliasEventContent>("m.room.canonical_alias"); + public Task<RoomCanonicalAliasLegacyEventContent?> GetCanonicalAliasAsync() => + GetStateAsync<RoomCanonicalAliasLegacyEventContent>("m.room.canonical_alias"); - public Task<RoomTopicEventContent?> GetTopicAsync() => - GetStateAsync<RoomTopicEventContent>("m.room.topic"); + public Task<RoomTopicLegacyEventContent?> GetTopicAsync() => + GetStateAsync<RoomTopicLegacyEventContent>("m.room.topic"); - public Task<RoomAvatarEventContent?> GetAvatarUrlAsync() => - GetStateAsync<RoomAvatarEventContent>("m.room.avatar"); + public Task<RoomAvatarLegacyEventContent?> GetAvatarUrlAsync() => + GetStateAsync<RoomAvatarLegacyEventContent>("m.room.avatar"); - public Task<RoomJoinRulesEventContent?> GetJoinRuleAsync() => - GetStateAsync<RoomJoinRulesEventContent>("m.room.join_rules"); + public Task<RoomJoinRulesLegacyEventContent?> GetJoinRuleAsync() => + GetStateAsync<RoomJoinRulesLegacyEventContent>("m.room.join_rules"); - public Task<RoomHistoryVisibilityEventContent?> GetHistoryVisibilityAsync() => - GetStateAsync<RoomHistoryVisibilityEventContent?>("m.room.history_visibility"); + public Task<RoomHistoryVisibilityLegacyEventContent?> GetHistoryVisibilityAsync() => + GetStateAsync<RoomHistoryVisibilityLegacyEventContent?>("m.room.history_visibility"); - public Task<RoomGuestAccessEventContent?> GetGuestAccessAsync() => - GetStateAsync<RoomGuestAccessEventContent>("m.room.guest_access"); + public Task<RoomGuestAccessLegacyEventContent?> GetGuestAccessAsync() => + GetStateAsync<RoomGuestAccessLegacyEventContent>("m.room.guest_access"); - public Task<RoomCreateEventContent?> GetCreateEventAsync() => - GetStateAsync<RoomCreateEventContent>("m.room.create"); + public Task<RoomCreateLegacyEventContent?> GetCreateEventAsync() => + GetStateAsync<RoomCreateLegacyEventContent>("m.room.create"); public async Task<string?> GetRoomType() { - var res = await GetStateAsync<RoomCreateEventContent>("m.room.create"); + var res = await GetStateAsync<RoomCreateLegacyEventContent>("m.room.create"); return res.Type; } - public Task<RoomPowerLevelEventContent?> GetPowerLevelsAsync() => - GetStateAsync<RoomPowerLevelEventContent>("m.room.power_levels"); + public Task<RoomPowerLevelLegacyEventContent?> GetPowerLevelsAsync() => + GetStateAsync<RoomPowerLevelLegacyEventContent>("m.room.power_levels"); public async Task<string> GetNameOrFallbackAsync(int maxMemberNames = 2) { try { @@ -393,7 +393,7 @@ public class GenericRoom { new UserIdAndReason { UserId = userId }); public async Task InviteUserAsync(string userId, string? reason = null, bool skipExisting = true) { - if (skipExisting && await GetStateAsync<RoomMemberEventContent>("m.room.member", userId) is not null) + if (skipExisting && await GetStateAsync<RoomMemberLegacyEventContent>("m.room.member", userId) is not null) return; await Homeserver.ClientHttpClient.PostAsJsonAsync($"/_matrix/client/v3/rooms/{RoomId}/invite", new UserIdAndReason(userId, reason)); } @@ -410,7 +410,7 @@ public class GenericRoom { await (await Homeserver.ClientHttpClient.PutAsJsonAsync($"/_matrix/client/v3/rooms/{RoomId}/state/{eventType}/{stateKey}", content)) .Content.ReadFromJsonAsync<EventIdResponse>(); - public async Task<EventIdResponse> SendTimelineEventAsync(string eventType, TimelineEventContent content) { + public async Task<EventIdResponse> SendTimelineEventAsync(string eventType, TimelineLegacyEventContent content) { var res = await Homeserver.ClientHttpClient.PutAsJsonAsync( $"/_matrix/client/v3/rooms/{RoomId}/send/{eventType}/" + Guid.NewGuid(), content, new JsonSerializerOptions { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull @@ -420,12 +420,12 @@ public class GenericRoom { public async Task<EventIdResponse?> SendFileAsync(string fileName, Stream fileStream, string messageType = "m.file", string contentType = "application/octet-stream") { var url = await Homeserver.UploadFile(fileName, fileStream); - var content = new RoomMessageEventContent() { + var content = new RoomMessageLegacyEventContent() { MessageType = messageType, Url = url, Body = fileName, FileName = fileName, - FileInfo = new RoomMessageEventContent.FileInfoStruct { + FileInfo = new RoomMessageLegacyEventContent.FileInfoStruct { Size = fileStream.Length, MimeType = contentType } diff --git a/LibMatrix/Utilities/CommonSyncFilters.cs b/LibMatrix/Utilities/CommonSyncFilters.cs
index 401850c..d07c225 100644 --- a/LibMatrix/Utilities/CommonSyncFilters.cs +++ b/LibMatrix/Utilities/CommonSyncFilters.cs
@@ -37,11 +37,11 @@ public static class CommonSyncFilters { Ephemeral = new SyncFilter.RoomFilter.StateFilter(rooms: []), State = new SyncFilter.RoomFilter.StateFilter { Types = new List<string> { - RoomCreateEventContent.EventId, - RoomNameEventContent.EventId, - RoomAvatarEventContent.EventId, - MjolnirShortcodeEventContent.EventId, - RoomPowerLevelEventContent.EventId + RoomCreateLegacyEventContent.EventId, + RoomNameLegacyEventContent.EventId, + RoomAvatarLegacyEventContent.EventId, + MjolnirShortcodeLegacyEventContent.EventId, + RoomPowerLevelLegacyEventContent.EventId }, LazyLoadMembers = true, IncludeRedundantMembers = false }, @@ -57,8 +57,8 @@ public static class CommonSyncFilters { Ephemeral = new SyncFilter.RoomFilter.StateFilter(rooms: []), State = new SyncFilter.RoomFilter.StateFilter { Types = new List<string> { - SpaceChildEventContent.EventId, - SpaceParentEventContent.EventId + SpaceChildLegacyEventContent.EventId, + SpaceParentLegacyEventContent.EventId }, LazyLoadMembers = true, IncludeRedundantMembers = false }, @@ -74,7 +74,7 @@ public static class CommonSyncFilters { Ephemeral = new SyncFilter.RoomFilter.StateFilter(rooms: []), State = new SyncFilter.RoomFilter.StateFilter { Types = new List<string> { - RoomMemberEventContent.EventId + RoomMemberLegacyEventContent.EventId }, LazyLoadMembers = true, IncludeRedundantMembers = false, Senders = ["@me"]