@page "/HSAdmin/Synapse/ResyncState" @using ArcaneLibs.Extensions @using LibMatrix.Homeservers.ImplementationDetails.Synapse.Models.Requests

Resync room state with other server


Room ID:
Via:
Execute @if (Executing) {

Execution in progress. DO NOT CLOSE THIS PAGE!

@* stage 1 *@ @if (Members is null) {

Loading members...

} else {

Got @Members.Count local members

} @* stage 2 *@ @if (DeleteStatus is not null) {

Purging room, please wait...

@DeleteStatus.ToJson(ignoreNull: true)
} else {

Purging room...

@DeleteStatus!.ToJson(ignoreNull: true)
} @* stage 3 *@ } @if (Done) {

Execution finished. You may now close the page :)

} @code { [Parameter] [SupplyParameterFromQuery] public string? RoomId { get; set; } [Parameter] [SupplyParameterFromQuery(Name = "via")] public string? Via { get; set; } private bool Executing { get; set; } private bool Done { get; set; } private List? Members { get; set; } private AuthenticatedHomeserverSynapse? Homeserver { get; set; } private SynapseAdminRoomDeleteStatus? DeleteStatus { get; set; } protected override async Task OnInitializedAsync() { if (await sessionStore.GetCurrentHomeserver(navigateOnFailure: true) is not AuthenticatedHomeserverSynapse hs) return; Homeserver = hs; StateHasChanged(); } private async Task Execute() { if (string.IsNullOrWhiteSpace(RoomId)) return; if (string.IsNullOrWhiteSpace(Via)) return; Executing = true; StateHasChanged(); Members = (await Homeserver.Admin.GetRoomMembersAsync(RoomId)) .Members.Where(m => m.EndsWith(Homeserver.ServerName)) .ToList(); StateHasChanged(); } }