From f82c62fe9d75c3cdc5ed5fe6f5e5ce517e6eafbc Mon Sep 17 00:00:00 2001 From: Rory& Date: Thu, 17 Apr 2025 11:26:12 +0200 Subject: Room query cleanup, add start of state resync --- .../Synapse/SubTools/SynapseRoomStateResync.razor | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 MatrixUtils.Web/Pages/HSAdmin/Synapse/SubTools/SynapseRoomStateResync.razor (limited to 'MatrixUtils.Web/Pages/HSAdmin/Synapse/SubTools') diff --git a/MatrixUtils.Web/Pages/HSAdmin/Synapse/SubTools/SynapseRoomStateResync.razor b/MatrixUtils.Web/Pages/HSAdmin/Synapse/SubTools/SynapseRoomStateResync.razor new file mode 100644 index 0000000..05a4bbc --- /dev/null +++ b/MatrixUtils.Web/Pages/HSAdmin/Synapse/SubTools/SynapseRoomStateResync.razor @@ -0,0 +1,79 @@ +@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(); + + + } + +} \ No newline at end of file -- cgit 1.5.1