From 90549fd2bce62723c35cc7d40551f1c5f2d2ba9d Mon Sep 17 00:00:00 2001 From: Rory& Date: Tue, 11 Mar 2025 07:41:46 +0100 Subject: Synapse admin tooling, well known res work --- .../Pages/Tools/Moderation/MembershipHistory.razor | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'MatrixUtils.Web/Pages/Tools/Moderation') 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."); -- cgit 1.5.1