diff options
Diffstat (limited to 'MatrixRoomUtils.Web/Pages/RoomState')
3 files changed, 56 insertions, 90 deletions
diff --git a/MatrixRoomUtils.Web/Pages/RoomState/RoomStateEditorPage.razor b/MatrixRoomUtils.Web/Pages/RoomState/RoomStateEditorPage.razor index 3037dcc..74f4f92 100644 --- a/MatrixRoomUtils.Web/Pages/RoomState/RoomStateEditorPage.razor +++ b/MatrixRoomUtils.Web/Pages/RoomState/RoomStateEditorPage.razor @@ -12,8 +12,7 @@ <br/> <InputSelect @bind-Value="shownStateKey"> <option value="">-- State key --</option> - @foreach (var stateEvent in FilteredEvents.Where(x => x.StateKey != "").Select(x => x.StateKey).Distinct().OrderBy(x => x)) - { + @foreach (var stateEvent in FilteredEvents.Where(x => x.StateKey != "").Select(x => x.StateKey).Distinct().OrderBy(x => x)) { <option value="@stateEvent">@stateEvent</option> Console.WriteLine(stateEvent); } @@ -21,8 +20,7 @@ <br/> <InputSelect @bind-Value="shownType"> <option value="">-- Type --</option> - @foreach (var stateEvent in FilteredEvents.Where(x => x.StateKey != shownStateKey).Select(x => x.Type).Distinct().OrderBy(x => x)) - { + @foreach (var stateEvent in FilteredEvents.Where(x => x.StateKey != shownStateKey).Select(x => x.Type).Distinct().OrderBy(x => x)) { <option value="@stateEvent">@stateEvent</option> } </InputSelect> @@ -45,12 +43,10 @@ public List<StateEventResponse> Events { get; set; } = new(); public string status = ""; - protected override async Task OnInitializedAsync() - { + protected override async Task OnInitializedAsync() { await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); await base.OnInitializedAsync(); - if (RuntimeCache.CurrentHomeServer != null) - { + if (RuntimeCache.CurrentHomeServer != null) { NavigationManager.NavigateTo("/Login"); return; } @@ -61,34 +57,29 @@ private DateTime _lastUpdate = DateTime.Now; - private async Task LoadStatesAsync() - { - int StateLoaded = 0; + private async Task LoadStatesAsync() { + var StateLoaded = 0; using var client = new HttpClient(); - //TODO: can this be improved? + //TODO: can this be improved? client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", RuntimeCache.CurrentHomeServer.AccessToken); var response = await client.GetAsync($"{RuntimeCache.CurrentHomeServer.FullHomeServerDomain}/_matrix/client/r0/rooms/{RoomId}/state"); // var response = await client.GetAsync($"http://localhost:5117/matrix-hq-state.json"); //var _events = await response.Content.ReadFromJsonAsync<Queue<StateEventStruct>>(); var _data = await response.Content.ReadAsStreamAsync(); var __events = JsonSerializer.DeserializeAsyncEnumerable<StateEventResponse>(_data); - await foreach (var _ev in __events) - { - var e = new StateEventResponse() - { + await foreach (var _ev in __events) { + var e = new StateEventResponse { Type = _ev.Type, StateKey = _ev.StateKey, OriginServerTs = _ev.OriginServerTs, Content = _ev.Content }; Events.Add(e); - if (string.IsNullOrEmpty(e.StateKey)) - { + if (string.IsNullOrEmpty(e.StateKey)) { FilteredEvents.Add(e); } StateLoaded++; - if ((DateTime.Now - _lastUpdate).TotalMilliseconds > 100) - { + if ((DateTime.Now - _lastUpdate).TotalMilliseconds > 100) { _lastUpdate = DateTime.Now; status = $"Loaded {StateLoaded} state events"; StateHasChanged(); @@ -99,8 +90,7 @@ StateHasChanged(); } - private async Task RebuildFilteredData() - { + private async Task RebuildFilteredData() { status = "Rebuilding filtered data..."; StateHasChanged(); await Task.Delay(1); @@ -112,16 +102,14 @@ StateHasChanged(); await Task.Delay(1); FilteredEvents = _FilteredEvents; - - if(_shownType != null) + + if (_shownType != null) shownEventJson = _FilteredEvents.Where(x => x.Type == _shownType).First().Content.ToJson(indent: true, ignoreNull: true); - + StateHasChanged(); } - - public struct PreRenderedStateEvent - { + public struct PreRenderedStateEvent { public string content { get; set; } public long origin_server_ts { get; set; } public string state_key { get; set; } @@ -132,11 +120,9 @@ // public string ReplacesState { get; set; } } - public bool ShowMembershipEvents - { + public bool ShowMembershipEvents { get => _showMembershipEvents; - set - { + set { _showMembershipEvents = value; RebuildFilteredData(); } @@ -146,21 +132,17 @@ private string _shownStateKey; private string _shownType; - private string shownStateKey - { + private string shownStateKey { get => _shownStateKey; - set - { + set { _shownStateKey = value; RebuildFilteredData(); } } - private string shownType - { + private string shownType { get => _shownType; - set - { + set { _shownType = value; RebuildFilteredData(); } diff --git a/MatrixRoomUtils.Web/Pages/RoomState/RoomStateRoomList.razor b/MatrixRoomUtils.Web/Pages/RoomState/RoomStateRoomList.razor index c654b13..82b5d75 100644 --- a/MatrixRoomUtils.Web/Pages/RoomState/RoomStateRoomList.razor +++ b/MatrixRoomUtils.Web/Pages/RoomState/RoomStateRoomList.razor @@ -3,16 +3,15 @@ @inject NavigationManager NavigationManager <h3>Room state viewer - Room list</h3> <hr/> -@if (Rooms.Count == 0) -{ +@if (Rooms.Count == 0) { <p>You are not in any rooms!</p> @* <p>Loading progress: @checkedRoomCount/@totalRoomCount</p> *@ } -else -{ - @foreach (var room in Rooms) - { - <a style="color: unset; text-decoration: unset;" href="/RoomStateViewer/@room.Replace('.','~')"><RoomListItem RoomId="@room"></RoomListItem></a> +else { + @foreach (var room in Rooms) { + <a style="color: unset; text-decoration: unset;" href="/RoomStateViewer/@room.Replace('.', '~')"> + <RoomListItem RoomId="@room"></RoomListItem> + </a> } <div style="margin-bottom: 4em;"></div> } @@ -21,16 +20,16 @@ else @code { public List<string> Rooms { get; set; } = new(); - protected override async Task OnInitializedAsync() - { + + protected override async Task OnInitializedAsync() { await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); await base.OnInitializedAsync(); - if (RuntimeCache.CurrentHomeServer == null) - { + if (RuntimeCache.CurrentHomeServer == null) { NavigationManager.NavigateTo("/Login"); return; } - Rooms = (await RuntimeCache.CurrentHomeServer.GetJoinedRooms()).Select(x=>x.RoomId).ToList(); + Rooms = (await RuntimeCache.CurrentHomeServer.GetJoinedRooms()).Select(x => x.RoomId).ToList(); Console.WriteLine("Fetched joined rooms!"); } -} \ No newline at end of file + +} \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Pages/RoomState/RoomStateViewerPage.razor b/MatrixRoomUtils.Web/Pages/RoomState/RoomStateViewerPage.razor index c7f9f3c..bfd4d10 100644 --- a/MatrixRoomUtils.Web/Pages/RoomState/RoomStateViewerPage.razor +++ b/MatrixRoomUtils.Web/Pages/RoomState/RoomStateViewerPage.razor @@ -1,7 +1,7 @@ @page "/RoomStateViewer/{RoomId}" +@using MatrixRoomUtils.Core.Extensions @using System.Net.Http.Headers @using System.Text.Json -@using MatrixRoomUtils.Core.Extensions @inject ILocalStorageService LocalStorage @inject NavigationManager NavigationManager <h3>Room state viewer - Viewing @RoomId</h3> @@ -19,8 +19,7 @@ </tr> </thead> <tbody> - @foreach (var stateEvent in FilteredEvents.Where(x => x.state_key == "").OrderBy(x => x.origin_server_ts)) - { + @foreach (var stateEvent in FilteredEvents.Where(x => x.state_key == "").OrderBy(x => x.origin_server_ts)) { <tr> <td>@stateEvent.type</td> <td style="max-width: fit-Content;"> @@ -31,8 +30,7 @@ </tbody> </table> -@foreach (var group in FilteredEvents.GroupBy(x => x.state_key).OrderBy(x => x.Key).Where(x => x.Key != "")) -{ +@foreach (var group in FilteredEvents.GroupBy(x => x.state_key).OrderBy(x => x.Key).Where(x => x.Key != "")) { <details> <summary>@group.Key</summary> <table class="table table-striped table-hover" style="width: fit-Content;"> @@ -43,8 +41,7 @@ </tr> </thead> <tbody> - @foreach (var stateEvent in group.OrderBy(x => x.origin_server_ts)) - { + @foreach (var stateEvent in group.OrderBy(x => x.origin_server_ts)) { <tr> <td>@stateEvent.type</td> <td style="max-width: fit-Content;"> @@ -72,12 +69,10 @@ public List<PreRenderedStateEvent> Events { get; set; } = new(); public string status = ""; - protected override async Task OnInitializedAsync() - { + protected override async Task OnInitializedAsync() { await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); await base.OnInitializedAsync(); - if (RuntimeCache.CurrentHomeServer == null) - { + if (RuntimeCache.CurrentHomeServer == null) { NavigationManager.NavigateTo("/Login"); return; } @@ -85,56 +80,50 @@ await LoadStatesAsync(); Console.WriteLine("Policy list editor initialized!"); } + private DateTime _lastUpdate = DateTime.Now; - private async Task LoadStatesAsync() - { - int StateLoaded = 0; - //TODO: can we improve this? + private async Task LoadStatesAsync() { + var StateLoaded = 0; + //TODO: can we improve this? using var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", RuntimeCache.CurrentHomeServer.AccessToken); - var response = await client.GetAsync($"{RuntimeCache.CurrentHomeServer.FullHomeServerDomain}/_matrix/client/r0/rooms/{RoomId}/state"); - // var response = await client.GetAsync($"http://localhost:5117/matrix-hq-state.json"); + var response = await client.GetAsync($"{RuntimeCache.CurrentHomeServer.FullHomeServerDomain}/_matrix/client/r0/rooms/{RoomId}/state"); + // var response = await client.GetAsync($"http://localhost:5117/matrix-hq-state.json"); //var _events = await response.Content.ReadFromJsonAsync<Queue<StateEventStruct>>(); var _data = await response.Content.ReadAsStreamAsync(); var __events = JsonSerializer.DeserializeAsyncEnumerable<StateEventStruct>(_data); - await foreach (var _ev in __events) - { - var e = new PreRenderedStateEvent() - { + await foreach (var _ev in __events) { + var e = new PreRenderedStateEvent { type = _ev.type, state_key = _ev.state_key, origin_server_ts = _ev.origin_server_ts, - content = _ev.content.ToJson(indent: true, ignoreNull: true), + content = _ev.content.ToJson(true, true) }; Events.Add(e); - if (string.IsNullOrEmpty(e.state_key)) - { + if (string.IsNullOrEmpty(e.state_key)) { FilteredEvents.Add(e); } StateLoaded++; - if ((DateTime.Now - _lastUpdate).TotalMilliseconds > 100) - { + if ((DateTime.Now - _lastUpdate).TotalMilliseconds > 100) { _lastUpdate = DateTime.Now; status = $"Loaded {StateLoaded} state events"; StateHasChanged(); await Task.Delay(0); } - } StateHasChanged(); } - private async Task RebuildFilteredData() - { + private async Task RebuildFilteredData() { status = "Rebuilding filtered data..."; StateHasChanged(); await Task.Delay(1); var _FilteredEvents = Events; if (!ShowMembershipEvents) _FilteredEvents = _FilteredEvents.Where(x => x.type != "m.room.member").ToList(); - + status = "Done, rerendering!"; StateHasChanged(); await Task.Delay(1); @@ -142,9 +131,7 @@ StateHasChanged(); } - - public struct PreRenderedStateEvent - { + public struct PreRenderedStateEvent { public string content { get; set; } public long origin_server_ts { get; set; } public string state_key { get; set; } @@ -155,11 +142,9 @@ // public string ReplacesState { get; set; } } - public bool ShowMembershipEvents - { + public bool ShowMembershipEvents { get => _showMembershipEvents; - set - { + set { _showMembershipEvents = value; RebuildFilteredData(); } |