diff options
Diffstat (limited to 'MatrixRoomUtils.Web/Pages')
-rw-r--r-- | MatrixRoomUtils.Web/Pages/HSAdmin/RoomQuery.razor | 3 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/Index.razor | 9 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/InvalidSession.razor | 17 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/KnownHomeserverList.razor | 8 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/MediaLocator.razor | 3 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/ModalTest.razor | 8 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/Rooms/Create.razor | 13 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/Rooms/Index.razor | 46 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/Rooms/PolicyList.razor | 2 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/Rooms/Space.razor | 32 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/Rooms/StateEditor.razor | 14 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/Rooms/StateViewer.razor | 12 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Pages/Rooms/Timeline.razor | 2 |
13 files changed, 87 insertions, 82 deletions
diff --git a/MatrixRoomUtils.Web/Pages/HSAdmin/RoomQuery.razor b/MatrixRoomUtils.Web/Pages/HSAdmin/RoomQuery.razor index b2928ee..679f324 100644 --- a/MatrixRoomUtils.Web/Pages/HSAdmin/RoomQuery.razor +++ b/MatrixRoomUtils.Web/Pages/HSAdmin/RoomQuery.razor @@ -158,10 +158,11 @@ public LocalRoomQueryFilter Filter { get; set; } = new(); - protected override async Task OnParametersSetAsync() { + protected override Task OnParametersSetAsync() { if (Ascending == null) Ascending = true; OrderBy ??= "name"; + return Task.CompletedTask; } private async Task Search() { diff --git a/MatrixRoomUtils.Web/Pages/Index.razor b/MatrixRoomUtils.Web/Pages/Index.razor index 65ba68b..1004ee3 100644 --- a/MatrixRoomUtils.Web/Pages/Index.razor +++ b/MatrixRoomUtils.Web/Pages/Index.razor @@ -15,16 +15,15 @@ Small collection of tools to do not-so-everyday things. <form> @foreach (var (auth, user) in _users.OrderByDescending(x=>x.Value.RoomCount)) { var _auth = auth; - var _user = user; <div style="margin-bottom: 1em;"> - <img style="border-radius: 50%; height: 3em; width: 3em;" src="@_user.AvatarUrl"/> + <img style="border-radius: 50%; height: 3em; width: 3em;" src="@user.AvatarUrl"/> <p style="margin-left: 1em; margin-top: -0.5em; display: inline-block;"> <input type="radio" name="csa" checked="@(_currentSession.AccessToken == _auth.AccessToken)" @onclick="@(()=>SwitchSession(_auth))" style="text-decoration-line: unset;"/> - <b>@_user.DisplayName</b> on <b>@_auth.Homeserver</b> + <b>@user.DisplayName</b> on <b>@_auth.Homeserver</b> <a role="button" @onclick="@(() => RemoveUser(_auth))">Remove</a> </p> - <p style="margin-top: -1.5em; margin-left: 4em;">Member of @_user.RoomCount rooms</p> + <p style="margin-top: -1.5em; margin-left: 4em;">Member of @user.RoomCount rooms</p> </div> } @@ -69,7 +68,7 @@ Small collection of tools to do not-so-everyday things. private class UserInfo { internal string AvatarUrl { get; set; } internal string DisplayName { get; set; } - internal int RoomCount { get; set; } = 0; + internal int RoomCount { get; set; } } private async Task RemoveUser(LoginResponse auth) { diff --git a/MatrixRoomUtils.Web/Pages/InvalidSession.razor b/MatrixRoomUtils.Web/Pages/InvalidSession.razor index 2b030ce..f555be5 100644 --- a/MatrixRoomUtils.Web/Pages/InvalidSession.razor +++ b/MatrixRoomUtils.Web/Pages/InvalidSession.razor @@ -23,6 +23,9 @@ </ModalWindow> } } +else { + <b>Something has gone wrong and the login was not passed along!</b> +} @code { @@ -30,13 +33,13 @@ [SupplyParameterFromQuery(Name = "ctx")] public string Context { get; set; } - private LoginResponse _login { get; set; } + private LoginResponse? _login { get; set; } - private bool _showRefreshDialog { get; set; } = false; + private bool _showRefreshDialog { get; set; } private string _password { get; set; } = ""; - private MatrixException _loginException { get; set; } + private MatrixException? _loginException { get; set; } protected override async Task OnInitializedAsync() { var tokens = await MRUStorage.GetAllTokens(); @@ -55,15 +58,16 @@ } private async Task RemoveUser() { - await MRUStorage.RemoveToken(_login); - if ((await MRUStorage.GetCurrentToken()).AccessToken == _login.AccessToken) - MRUStorage.SetCurrentToken((await MRUStorage.GetAllTokens()).FirstOrDefault()); + await MRUStorage.RemoveToken(_login!); + if ((await MRUStorage.GetCurrentToken())!.AccessToken == _login!.AccessToken) + await MRUStorage.SetCurrentToken((await MRUStorage.GetAllTokens())?.FirstOrDefault()); await OnInitializedAsync(); } private async Task OpenRefreshDialog() { _showRefreshDialog = true; StateHasChanged(); + await Task.CompletedTask; } private async Task SwitchSession(LoginResponse auth) { @@ -73,6 +77,7 @@ } private async Task TryLogin() { + if(_login is null) throw new NullReferenceException("Login is null!"); try { var result = await HomeserverProvider.Login(_login.Homeserver, _login.UserId, _password); if (result is null) { diff --git a/MatrixRoomUtils.Web/Pages/KnownHomeserverList.razor b/MatrixRoomUtils.Web/Pages/KnownHomeserverList.razor index 10a2929..22a004d 100644 --- a/MatrixRoomUtils.Web/Pages/KnownHomeserverList.razor +++ b/MatrixRoomUtils.Web/Pages/KnownHomeserverList.razor @@ -78,10 +78,10 @@ else { await foreach (var state in states) { if (state.Type is not "m.room.member") continue; progress.ProcessedUsers[room].Total++; - if (!homeServers.Any(x => x.Server == state.StateKey.Split(':')[1])) { - homeServers.Add(new HomeServerInfo { Server = state.StateKey.Split(':')[1] }); - Console.WriteLine($"Added new homeserver {state.StateKey.Split(':')[1]}"); - } + + if (homeServers.Any(x => x.Server == state.StateKey.Split(':')[1])) continue; + homeServers.Add(new HomeServerInfo { Server = state.StateKey.Split(':')[1] }); + Console.WriteLine($"Added new homeserver {state.StateKey.Split(':')[1]}"); } semaphore.Release(); progress.ProcessedUsers[room].IsFinished = true; diff --git a/MatrixRoomUtils.Web/Pages/MediaLocator.razor b/MatrixRoomUtils.Web/Pages/MediaLocator.razor index 8c41440..af6e67a 100644 --- a/MatrixRoomUtils.Web/Pages/MediaLocator.razor +++ b/MatrixRoomUtils.Web/Pages/MediaLocator.razor @@ -56,7 +56,7 @@ }); } - async Task executeSearch() { + Task executeSearch() { var sem = new SemaphoreSlim(128, 128); homeservers.ForEach(async hs => { await sem.WaitAsync(); @@ -80,6 +80,7 @@ } StateHasChanged(); }); + return Task.CompletedTask; } async Task addMoreHomeservers() { diff --git a/MatrixRoomUtils.Web/Pages/ModalTest.razor b/MatrixRoomUtils.Web/Pages/ModalTest.razor index 79c7fcd..2b1c9bc 100644 --- a/MatrixRoomUtils.Web/Pages/ModalTest.razor +++ b/MatrixRoomUtils.Web/Pages/ModalTest.razor @@ -5,10 +5,10 @@ @foreach (var (key, value) in _windowInfos) { @* <ModalWindow X="@value.X" Y="@value.Y" Title="@value.Title">@value.Content</ModalWindow> *@ } -@for (int i = 0; i < 5; i++) { +@for (var i = 0; i < 5; i++) { var i1 = i; <ModalWindow X="@Random.Shared.Next(1400)" Y="@Random.Shared.Next(1000)" Title="@("Window " + i1)" OnCloseClicked="() => OnCloseClicked(i1)"> - @for (int j = 0; j < i1; j++) { + @for (var j = 0; j < i1; j++) { <h1>@j</h1> } </ModalWindow> @@ -31,9 +31,9 @@ double _y = 0; double multiplier = 1; - for (int i = 0; i < 200; i++) { + for (var i = 0; i < 200; i++) { var i1 = i; - _windowInfos.Add(_windowInfos.Count, new WindowInfo() { + _windowInfos.Add(_windowInfos.Count, new WindowInfo { X = _x, Y = _y, Title = "Win" + i1, diff --git a/MatrixRoomUtils.Web/Pages/Rooms/Create.razor b/MatrixRoomUtils.Web/Pages/Rooms/Create.razor index ebf6444..3b7d000 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/Create.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/Create.razor @@ -131,7 +131,7 @@ <td> @if (serverAcl?.Allow is null) { <p>No allow rules exist!</p> - <button @onclick="@(() => { serverAcl.Allow = new() { "*" }; })">Create sane defaults</button> + <button @onclick="@(() => { serverAcl.Allow = new List<string> { "*" }; })">Create sane defaults</button> } else { <details> @@ -141,7 +141,7 @@ } @if (serverAcl?.Deny is null) { <p>No deny rules exist!</p> - <button @onclick="@(() => { serverAcl.Allow = new(); })">Create sane defaults</button> + <button @onclick="@(() => { serverAcl.Allow = new List<string>(); })">Create sane defaults</button> } else { <details> @@ -240,12 +240,7 @@ @code { private string RoomPreset { - get { - if (Presets.ContainsValue(creationEvent)) { - return Presets.First(x => x.Value == creationEvent).Key; - } - return "Not a preset"; - } + get => Presets.ContainsValue(creationEvent) ? Presets.First(x => x.Value == creationEvent).Key : "Not a preset"; set { creationEvent = Presets[value]; JsonChanged(); @@ -310,7 +305,7 @@ creationEvent.InitialState.Add(new StateEvent { Type = "m.room.member", StateKey = mxid, - TypedContent = new RoomMemberEventData() { + TypedContent = new RoomMemberEventData { Membership = "invite", Reason = "Automatically invited at room creation time." } diff --git a/MatrixRoomUtils.Web/Pages/Rooms/Index.razor b/MatrixRoomUtils.Web/Pages/Rooms/Index.razor index 89ededf..ad3a714 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/Index.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/Index.razor @@ -19,25 +19,25 @@ private ProfileResponseEventData GlobalProfile { get; set; } private SyncFilter filter = new() { - AccountData = new() { - NotTypes = new() { "*" }, + AccountData = new SyncFilter.EventFilter { + NotTypes = new List<string> { "*" }, Limit = 1 }, - Presence = new() { - NotTypes = new() { "*" }, + Presence = new SyncFilter.EventFilter { + NotTypes = new List<string> { "*" }, Limit = 1 }, - Room = new() { - AccountData = new() { - NotTypes = new() { "*" }, + Room = new SyncFilter.RoomFilter { + AccountData = new SyncFilter.RoomFilter.StateFilter { + NotTypes = new List<string> { "*" }, Limit = 1 }, - Ephemeral = new() { - NotTypes = new() { "*" }, + Ephemeral = new SyncFilter.RoomFilter.StateFilter { + NotTypes = new List<string> { "*" }, Limit = 1 }, - State = new() { - Types = new List<string>() { + State = new SyncFilter.RoomFilter.StateFilter { + Types = new List<string> { "m.room.name", "m.room.avatar", "m.room.create", @@ -45,8 +45,8 @@ "m.room.power_levels" } }, - Timeline = new() { - NotTypes = new() { "*" }, + Timeline = new SyncFilter.RoomFilter.StateFilter { + NotTypes = new List<string> { "*" }, Limit = 1 } } @@ -74,9 +74,9 @@ room = Rooms.First(x => x.Room.RoomId == roomId); } else { - room = new RoomInfo() { + room = new RoomInfo { Room = await hs.GetRoom(roomId), - StateEvents = new() + StateEvents = new List<StateEventResponse?>() }; Rooms.Add(room); KnownRooms.Add(room); @@ -91,23 +91,23 @@ Status = "Sync complete!"; foreach (var roomInfo in Rooms) { if (!roomInfo.StateEvents.Any(x => x.Type == "m.room.name")) { - roomInfo.StateEvents.Add(new StateEventResponse() { + roomInfo.StateEvents.Add(new StateEventResponse { Type = "m.room.name", - TypedContent = new RoomNameEventData() { + TypedContent = new RoomNameEventData { Name = roomInfo.Room.RoomId } }); } if (!roomInfo.StateEvents.Any(x => x.Type == "m.room.avatar")) { - roomInfo.StateEvents.Add(new StateEventResponse() { + roomInfo.StateEvents.Add(new StateEventResponse { Type = "m.room.avatar", - TypedContent = new RoomAvatarEventData() { + TypedContent = new RoomAvatarEventData { } }); } if (!roomInfo.StateEvents.Any(x => x.Type == "org.matrix.mjolnir.shortcode")) { - roomInfo.StateEvents.Add(new StateEventResponse() { + roomInfo.StateEvents.Add(new StateEventResponse { Type = "org.matrix.mjolnir.shortcode" }); } @@ -118,10 +118,10 @@ var memberTasks = Rooms.Select(async roomInfo => { if (!roomInfo.StateEvents.Any(x => x.Type == "m.room.member" && x.StateKey == hs.WhoAmI.UserId)) { await semaphore.WaitAsync(); - roomInfo.StateEvents.Add(new StateEventResponse() { + roomInfo.StateEvents.Add(new StateEventResponse { Type = "m.room.member", StateKey = hs.WhoAmI.UserId, - TypedContent = await roomInfo.Room.GetStateAsync<RoomMemberEventData>("m.room.member", hs.WhoAmI.UserId) ?? new RoomMemberEventData() { + TypedContent = await roomInfo.Room.GetStateAsync<RoomMemberEventData>("m.room.member", hs.WhoAmI.UserId) ?? new RoomMemberEventData { Membership = "unknown" } }); @@ -148,7 +148,7 @@ await base.OnInitializedAsync(); } - private bool RenderContents { get; set; } = false; + private bool RenderContents { get; set; } private string _status; diff --git a/MatrixRoomUtils.Web/Pages/Rooms/PolicyList.razor b/MatrixRoomUtils.Web/Pages/Rooms/PolicyList.razor index 3297bcb..2b31389 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/PolicyList.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/PolicyList.razor @@ -114,7 +114,7 @@ else { @foreach (var policyEvent in PolicyEvents.Where(x => x.Type == "m.policy.rule.room" && (x.TypedContent as PolicyRuleStateEventData).Entity == null)) { <tr> <td>@policyEvent.StateKey</td> - <td>@policyEvent.RawContent.ToJson(false, true)</td> + <td>@policyEvent.RawContent!.ToJson(false, true)</td> </tr> } </tbody> diff --git a/MatrixRoomUtils.Web/Pages/Rooms/Space.razor b/MatrixRoomUtils.Web/Pages/Rooms/Space.razor index 15c7c70..c37b8ab 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/Space.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/Space.razor @@ -39,17 +39,21 @@ var state = Room.GetFullStateAsync(); await foreach (var stateEvent in state) { - if (stateEvent.Type == "m.space.child") { - var roomId = stateEvent.StateKey; - var room = await hs.GetRoom(roomId); - if (room is not null) { - Rooms.Add(room); + switch (stateEvent.Type) { + case "m.space.child": { + var roomId = stateEvent.StateKey; + var room = await hs.GetRoom(roomId); + if (room is not null) { + Rooms.Add(room); + } + break; } - } - else if (stateEvent.Type == "m.room.member") { - var serverName = stateEvent.StateKey.Split(':').Last(); - if (!ServersInSpace.Contains(serverName)) { - ServersInSpace.Add(serverName); + case "m.room.member": { + var serverName = stateEvent.StateKey.Split(':').Last(); + if (!ServersInSpace.Contains(serverName)) { + ServersInSpace.Add(serverName); + } + break; } } } @@ -89,10 +93,10 @@ // await base.OnInitializedAsync(); } - private async Task JoinAllRooms() { - foreach (var room in Rooms) { - room.JoinAsync(ServersInSpace.ToArray()); - } + private Task JoinAllRooms() { + List<Task> tasks = Rooms.Select(room => room.JoinAsync(ServersInSpace.ToArray())).ToList(); + Task.WaitAll(tasks.ToArray()); + return Task.CompletedTask; } } diff --git a/MatrixRoomUtils.Web/Pages/Rooms/StateEditor.razor b/MatrixRoomUtils.Web/Pages/Rooms/StateEditor.razor index e01fca8..ef7cd51 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/StateEditor.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/StateEditor.razor @@ -73,12 +73,12 @@ FilteredEvents.Add(_ev); } StateLoaded++; - if ((DateTime.Now - _lastUpdate).TotalMilliseconds > 100) { - _lastUpdate = DateTime.Now; - status = $"Loaded {StateLoaded} state events"; - StateHasChanged(); - await Task.Delay(0); - } + + if (!((DateTime.Now - _lastUpdate).TotalMilliseconds > 100)) continue; + _lastUpdate = DateTime.Now; + status = $"Loaded {StateLoaded} state events"; + StateHasChanged(); + await Task.Delay(0); } StateHasChanged(); @@ -98,7 +98,7 @@ FilteredEvents = _FilteredEvents; if (_shownType is not null) - shownEventJson = _FilteredEvents.Where(x => x.Type == _shownType).First().RawContent.ToJson(indent: true, ignoreNull: true); + shownEventJson = _FilteredEvents.First(x => x.Type == _shownType).RawContent.ToJson(indent: true, ignoreNull: true); StateHasChanged(); } diff --git a/MatrixRoomUtils.Web/Pages/Rooms/StateViewer.razor b/MatrixRoomUtils.Web/Pages/Rooms/StateViewer.razor index cf23c36..5a48b32 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/StateViewer.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/StateViewer.razor @@ -91,12 +91,12 @@ FilteredEvents.Add(_ev); } StateLoaded++; - if ((DateTime.Now - _lastUpdate).TotalMilliseconds > 100) { - _lastUpdate = DateTime.Now; - status = $"Loaded {StateLoaded} state events"; - StateHasChanged(); - await Task.Delay(0); - } + + if (!((DateTime.Now - _lastUpdate).TotalMilliseconds > 100)) continue; + _lastUpdate = DateTime.Now; + status = $"Loaded {StateLoaded} state events"; + StateHasChanged(); + await Task.Delay(0); } StateHasChanged(); diff --git a/MatrixRoomUtils.Web/Pages/Rooms/Timeline.razor b/MatrixRoomUtils.Web/Pages/Rooms/Timeline.razor index 7fe89cc..4a5298b 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/Timeline.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/Timeline.razor @@ -45,7 +45,7 @@ private StateEventResponse GetProfileEventBefore(StateEventResponse Event) => Events.TakeWhile(x => x != Event).Last(e => e.Type == "m.room.member" && e.StateKey == Event.Sender); - private Type ComponentType(StateEventResponse Event) => Event.TypedContent switch { + private Type ComponentType(StateEvent Event) => Event.TypedContent switch { RoomMessageEventData => typeof(TimelineMessageItem), RoomMemberEventData => typeof(TimelineMemberItem), _ => typeof(TimelineUnknownItem) |