diff options
author | TheArcaneBrony <myrainbowdash949@gmail.com> | 2023-05-04 15:26:17 +0200 |
---|---|---|
committer | TheArcaneBrony <myrainbowdash949@gmail.com> | 2023-05-04 15:26:17 +0200 |
commit | dc3201d641a03e051c6f0db07612eb6b0bb506c3 (patch) | |
tree | f4a57bcfbdf0be6a373df342d26b76bdbf43e2e9 /MatrixRoomUtils.Web/Pages/RoomStateEditorPage.razor | |
parent | Fix bugs in policy editor and state viewer (diff) | |
download | MatrixUtils-dc3201d641a03e051c6f0db07612eb6b0bb506c3.tar.xz |
Dark theme, fancier room list
Diffstat (limited to 'MatrixRoomUtils.Web/Pages/RoomStateEditorPage.razor')
-rw-r--r-- | MatrixRoomUtils.Web/Pages/RoomStateEditorPage.razor | 171 |
1 files changed, 0 insertions, 171 deletions
diff --git a/MatrixRoomUtils.Web/Pages/RoomStateEditorPage.razor b/MatrixRoomUtils.Web/Pages/RoomStateEditorPage.razor deleted file mode 100644 index 47f2aba..0000000 --- a/MatrixRoomUtils.Web/Pages/RoomStateEditorPage.razor +++ /dev/null @@ -1,171 +0,0 @@ -@page "/RoomStateViewer/{RoomId}/Edit" -@using System.Net.Http.Headers -@using System.Text.Json -@using MatrixRoomUtils.Core -@inject ILocalStorageService LocalStorage -@inject NavigationManager NavigationManager -<h3>Room state editor</h3> -<p>Room ID: @RoomId</p> - -<p>@status</p> - -<input type="checkbox" id="showAll" @bind="ShowMembershipEvents"/> Show member events -<br/> -<InputSelect @bind-Value="shownStateKey"> - <option value="">-- State key --</option> - @foreach (var stateEvent in FilteredEvents.Where(x => x.state_key != "").Select(x => x.state_key).Distinct().OrderBy(x => x)) - { - <option value="@stateEvent">@stateEvent</option> - Console.WriteLine(stateEvent); - } -</InputSelect> -<br/> -<InputSelect @bind-Value="shownType"> - <option value="">-- Type --</option> - @foreach (var stateEvent in FilteredEvents.Where(x => x.state_key != shownStateKey).Select(x => x.type).Distinct().OrderBy(x => x)) - { - <option value="@stateEvent">@stateEvent</option> - } -</InputSelect> -<br/> - -<textarea @bind="shownEventJson" style="width: 100%; height: fit-content;"></textarea> - -<LogView></LogView> - -@code { - //get room list - // - sync withroom list filter - // type = support.feline.msc3784 - //support.feline.policy.lists.msc.v1 - - [Parameter] - public string? RoomId { get; set; } - - public List<StateEvent> FilteredEvents { get; set; } = new(); - public List<StateEvent> Events { get; set; } = new(); - public string status = ""; - - protected override async Task OnInitializedAsync() - { - if (!RuntimeCache.WasLoaded) await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); - await base.OnInitializedAsync(); - if (RuntimeCache.CurrentHomeServer != null) - { - NavigationManager.NavigateTo("/Login"); - return; - } - RoomId = RoomId.Replace('~', '.'); - await LoadStatesAsync(); - Console.WriteLine("Policy list editor initialized!"); - } - - private DateTime _lastUpdate = DateTime.Now; - - private async Task LoadStatesAsync() - { - int StateLoaded = 0; - using var client = new HttpClient(); - //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<StateEvent>(_data); - await foreach (var _ev in __events) - { - var e = new StateEvent() - { - type = _ev.type, - state_key = _ev.state_key, - origin_server_ts = _ev.origin_server_ts, - content = _ev.content - }; - Events.Add(e); - if (string.IsNullOrEmpty(e.state_key)) - { - FilteredEvents.Add(e); - } - StateLoaded++; - if ((DateTime.Now - _lastUpdate).TotalMilliseconds > 100) - { - _lastUpdate = DateTime.Now; - status = $"Loaded {StateLoaded} state events"; - StateHasChanged(); - await Task.Delay(0); - } - } - - StateHasChanged(); - } - - 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); - FilteredEvents = _FilteredEvents; - - if(_shownType != null) - shownEventJson = _FilteredEvents.Where(x => x.type == _shownType).First().content.ToJson(indent: true, ignoreNull: true); - - StateHasChanged(); - } - - - public struct PreRenderedStateEvent - { - public string content { get; set; } - public long origin_server_ts { get; set; } - public string state_key { get; set; } - public string type { get; set; } - // public string sender { get; set; } - // public string event_id { get; set; } - // public string user_id { get; set; } - // public string replaces_state { get; set; } - } - - public bool ShowMembershipEvents - { - get => _showMembershipEvents; - set - { - _showMembershipEvents = value; - RebuildFilteredData(); - } - } - - private bool _showMembershipEvents; - private string _shownStateKey; - private string _shownType; - - private string shownStateKey - { - get => _shownStateKey; - set - { - _shownStateKey = value; - RebuildFilteredData(); - } - } - - private string shownType - { - get => _shownType; - set - { - _shownType = value; - RebuildFilteredData(); - } - } - - private string shownEventJson { get; set; } -} \ No newline at end of file |