@page "/Tools/Moderation/MembershipHistory" @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 @using LibMatrix.Filters @{ var sw = Stopwatch.StartNew(); Console.WriteLine("Start render"); }
Show
Show
@if (DisambiguateKicks) {
@if (DisambiguateInviteAccepted) {
@if (DisambiguateKnockAccepted) {
Sender:
User:
@DateTimeOffset.FromUnixTimeMilliseconds(membership.OriginServerTs ?? 0).ToString("g") |
@switch (transition) {
case MembershipTransition.None:
Unknown membership! Got None
break;
case MembershipTransition.Join:
@membership.StateKey joined the room @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(reason: {content.Reason})") @membership.StateKey left the room break; case MembershipTransition.Knock:@membership.StateKey knocked @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(reason: {content.Reason})") break; case MembershipTransition.Invite:@membership.Sender invited @membership.StateKey @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(reason: {content.Reason})") break; case MembershipTransition.Ban:@membership.Sender banned @membership.StateKey @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(reason: {content.Reason})") break; @* disambiguated *@ case MembershipTransition.Kick:@membership.Sender kicked @membership.StateKey @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(reason: {content.Reason})") break; case MembershipTransition.ProfileUpdate:
@membership.Sender changed their profile @membership.StateKey accepted the invite from @previousMembership!.Sender @(string.IsNullOrWhiteSpace(previousContent?.Reason) ? "" : $"(invite reason: {previousContent.Reason})") @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(accept reason: {content.Reason})") break; case MembershipTransition.KnockAccepted:@membership.StateKey's knock was accepted by @previousMembership!.Sender @(string.IsNullOrWhiteSpace(previousContent?.Reason) ? "" : $"(knock reason: {previousContent.Reason})") @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(accept reason: {content.Reason})") break; case MembershipTransition.KnockRejected:@membership.StateKey's knock was rejected by @previousMembership!.Sender @(string.IsNullOrWhiteSpace(previousContent?.Reason) ? "" : $"(knock reason: {previousContent.Reason})") @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(reject reason: {content.Reason})") break; case MembershipTransition.Unban:@membership.Sender unbanned @membership.StateKey @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(reason: {content.Reason})") break; case MembershipTransition.InviteRejected:@membership.StateKey rejected the invite from @previousMembership!.Sender @(string.IsNullOrWhiteSpace(previousContent?.Reason) ? "" : $"(invite reason: {previousContent.Reason})") @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(reject reason: {content.Reason})") break; case MembershipTransition.InviteRetracted:@membership.Sender retracted the invite for @membership.StateKey @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(reason: {content.Reason})") break; case MembershipTransition.KnockRetracted:@membership.Sender retracted the knock for @membership.StateKey @(string.IsNullOrWhiteSpace(content.Reason) ? "" : $"(reason: {content.Reason})") break; default: throw new ArgumentOutOfRangeException(); } |
@line}