about summary refs log tree commit diff
path: root/MatrixUtils.Web/Pages/Tools/Moderation/MembershipHistory.razor
diff options
context:
space:
mode:
Diffstat (limited to 'MatrixUtils.Web/Pages/Tools/Moderation/MembershipHistory.razor')
-rw-r--r--MatrixUtils.Web/Pages/Tools/Moderation/MembershipHistory.razor11
1 files changed, 10 insertions, 1 deletions
diff --git a/MatrixUtils.Web/Pages/Tools/Moderation/MembershipHistory.razor b/MatrixUtils.Web/Pages/Tools/Moderation/MembershipHistory.razor

index 2549c12..d9503ee 100644 --- a/MatrixUtils.Web/Pages/Tools/Moderation/MembershipHistory.razor +++ b/MatrixUtils.Web/Pages/Tools/Moderation/MembershipHistory.razor
@@ -2,6 +2,7 @@ @using System.Collections.Frozen @using System.Collections.ObjectModel @using System.Diagnostics +@using System.Text.Json @using ArcaneLibs.Extensions @using LibMatrix @using LibMatrix.EventTypes.Spec.State.RoomInfo @@ -422,7 +423,15 @@ var filter = new SyncFilter.EventFilter() { Types = [RoomMemberEventContent.EventId] }; var events = room.GetManyMessagesAsync(limit: int.MaxValue, filter: filter.ToJson(ignoreNull: true, indent: false)); await foreach (var resp in events) { - var all = resp.State.Concat(resp.Chunk); + var all = resp.State.Concat(resp.Chunk) + // ugly hack, because some users fuck around too much + .Select(x => { + if (x.RawContent?["displayname"]?.GetValueKind() != JsonValueKind.String) + x.RawContent?.Remove("displayname"); + if (x.RawContent?["avatar_url"]?.GetValueKind() is not JsonValueKind.String) + x.RawContent?.Remove("avatar_url"); + return x; + }); Memberships.AddRange(all.Where(x => x.Type == RoomMemberEventContent.EventId)); Log.Add($"Got {resp.State.Count} state and {resp.Chunk.Count} timeline events.");