@page "/Tools/Debug/JoinRoom" @using System.Collections.ObjectModel

Join room


Room ID:
Via server(s), comma separated:
Unblock room (Synapse):
Join

@foreach (var line in Log) {
@line

} @code { AuthenticatedHomeserverGeneric? hs { get; set; } ObservableCollection Log { get; set; } = new ObservableCollection(); [Parameter, SupplyParameterFromQuery(Name = "roomId")] public string? RoomId { get; set; } [Parameter, SupplyParameterFromQuery(Name = "via")] public string? Servers { get; set; } [Parameter, SupplyParameterFromQuery(Name = "unblock")] public bool Unblock { get; set; } = false; protected override async Task OnInitializedAsync() { hs = await sessionStore.GetCurrentHomeserver(navigateOnFailure: true); if (hs is null) return; Log.CollectionChanged += (sender, args) => StateHasChanged(); StateHasChanged(); Console.WriteLine("Rerendered!"); await base.OnInitializedAsync(); } private async Task Join() { if (string.IsNullOrWhiteSpace(RoomId)) return; var room = hs.GetRoom(RoomId); Log.Add("Got room object..."); if (Unblock && hs is AuthenticatedHomeserverSynapse synapse) { try { await synapse.Admin.BlockRoom(RoomId, false); Log.Add($"Synapse: unblocked room"); } catch (Exception e) { Log.Add($"Synapse: failed to unblock room: {e}"); } } try { await room.JoinAsync(Servers?.Split(','), checkIfAlreadyMember: false); Log.Add("Joined room!"); } catch (Exception e) { Log.Add(e.ToString()); } Log.Add("Done!"); } }