diff options
Diffstat (limited to 'MatrixRoomUtils.Web/Shared')
-rw-r--r-- | MatrixRoomUtils.Web/Shared/IndexComponents/IndexUserItem.razor | 24 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Shared/LogView.razor | 26 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Shared/MainLayout.razor | 14 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Shared/NavMenu.razor | 9 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Shared/PortableDevTools.razor | 31 | ||||
-rw-r--r-- | MatrixRoomUtils.Web/Shared/RoomListItem.razor | 33 |
6 files changed, 111 insertions, 26 deletions
diff --git a/MatrixRoomUtils.Web/Shared/IndexComponents/IndexUserItem.razor b/MatrixRoomUtils.Web/Shared/IndexComponents/IndexUserItem.razor index 08161b2..87ef831 100644 --- a/MatrixRoomUtils.Web/Shared/IndexComponents/IndexUserItem.razor +++ b/MatrixRoomUtils.Web/Shared/IndexComponents/IndexUserItem.razor @@ -10,22 +10,30 @@ <div style="margin-bottom: 1em;"> <img style="border-radius: 50%; height: 3em; width: 3em;" src="@_avatarUrl"/> - <span style="margin-left: 1em;"><input type="radio" name="csa" checked="@(RuntimeCache.LastUsedToken == User.AccessToken)" onclick="@SetCurrent" style="text-decoration-line: unset;"/> <b>@User.Profile.DisplayName</b> on <b>@User.LoginResponse.HomeServer</b></span> - <a href="#" onclick="@RemoveUser">Remove</a> + <p style="margin-left: 1em; margin-top: -0.5em; display: inline-block;"> + <input type="radio" name="csa" checked="@(RuntimeCache.LastUsedToken == User.AccessToken)" onclick="@SetCurrent" style="text-decoration-line: unset;"/> + <b>@User.Profile.DisplayName</b> on <b>@User.LoginResponse.HomeServer</b> + <a href="#" onclick="@RemoveUser">Remove</a> + </p> + <p style="margin-top: -1.5em; margin-left: 4em;">Member of @_roomCount rooms</p> + </div> @code { [Parameter] public UserInfo User { get; set; } = null!; - + private string _avatarUrl { get; set; } + private int _roomCount { get; set; } = 0; protected override async Task OnInitializedAsync() { + var hs = await new AuthenticatedHomeServer(User.LoginResponse.UserId, User.AccessToken, User.LoginResponse.HomeServer).Configure(); if (User.Profile.AvatarUrl != null && User.Profile.AvatarUrl != "") - _avatarUrl = await (await new AuthenticatedHomeServer(User.LoginResponse.UserId, User.AccessToken, User.LoginResponse.HomeServer).Configure()).ResolveMediaUri(User.Profile.AvatarUrl); + _avatarUrl = await hs.ResolveMediaUri(User.Profile.AvatarUrl); else _avatarUrl = "https://api.dicebear.com/6.x/identicon/svg?seed=" + User.LoginResponse.UserId; + _roomCount = (await hs.GetJoinedRooms()).Count; await base.OnInitializedAsync(); } @@ -34,15 +42,17 @@ Console.WriteLine(User.ToJson()); RuntimeCache.LoginSessions.Remove(User.AccessToken); await LocalStorageWrapper.ReloadLocalStorage(LocalStorage); - + StateHasChanged(); } + private async Task SetCurrent() { RuntimeCache.LastUsedToken = User.AccessToken; - //RuntimeCache.CurrentHomeserver = await MatrixAuth.ResolveHomeserverFromWellKnown(LocalStorageWrapper.LoginSessions[Token].LoginResponse.HomeServer); + //RuntimeCache.CurrentHomeserver = await MatrixAuth.ResolveHomeserverFromWellKnown(LocalStorageWrapper.LoginSessions[Token].LoginResponse.HomeServer); await LocalStorageWrapper.ReloadLocalStorage(LocalStorage); - + StateHasChanged(); } + } \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Shared/LogView.razor b/MatrixRoomUtils.Web/Shared/LogView.razor index f60f271..80fd355 100644 --- a/MatrixRoomUtils.Web/Shared/LogView.razor +++ b/MatrixRoomUtils.Web/Shared/LogView.razor @@ -1,13 +1,27 @@ @using System.Text -<u>Logs</u><br/> -<pre> - @_stringBuilder -</pre> +@if (LocalStorageWrapper.Settings.DeveloperSettings.EnableLogViewers) +{ + <u>Logs</u> + <br/> + <pre> + @_stringBuilder + </pre> +} @code { StringBuilder _stringBuilder = new(); - protected override void OnInitialized() + protected override async Task OnInitializedAsync() { + await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); + if (!LocalStorageWrapper.Settings.DeveloperSettings.EnableConsoleLogging) + { + Console.WriteLine("Console logging disabled!"); + var _sw = new StringWriter(); + Console.SetOut(_sw); + Console.SetError(_sw); + return; + } + if (!LocalStorageWrapper.Settings.DeveloperSettings.EnableLogViewers) return; //intecept stdout with textwriter to get logs var sw = new StringWriter(_stringBuilder); Console.SetOut(sw); @@ -27,6 +41,6 @@ } // ReSharper disable once FunctionNeverReturns - This is intentional behavior }); - base.OnInitialized(); + await base.OnInitializedAsync(); } } \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Shared/MainLayout.razor b/MatrixRoomUtils.Web/Shared/MainLayout.razor index da27978..b1b0b53 100644 --- a/MatrixRoomUtils.Web/Shared/MainLayout.razor +++ b/MatrixRoomUtils.Web/Shared/MainLayout.razor @@ -1,5 +1,4 @@ -@using MatrixRoomUtils.Core.Extensions -@using System.Net +@using System.Net @inherits LayoutComponentBase <div class="page"> @@ -9,6 +8,7 @@ <main> <div class="top-row px-4"> + <PortableDevTools></PortableDevTools> <a href="https://git.rory.gay/MatrixRoomUtils.git/" target="_blank">Git</a> <a href="https://matrix.to/#/%23mru%3Arory.gay?via=rory.gay&via=matrix.org&via=feline.support" target="_blank">Matrix</a> @if (showDownload) @@ -31,6 +31,16 @@ using var hc = new HttpClient(); var hr = await hc.SendAsync(new(HttpMethod.Head, NavigationManager.ToAbsoluteUri("/MRU-BIN.tar.xz").AbsoluteUri)); showDownload = hr.StatusCode == HttpStatusCode.OK; + + await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); + if (!LocalStorageWrapper.Settings.DeveloperSettings.EnableConsoleLogging) + { + Console.WriteLine("Console logging disabled!"); + var sw = new StringWriter(); + Console.SetOut(sw); + Console.SetError(sw); + } + await base.OnInitializedAsync(); } diff --git a/MatrixRoomUtils.Web/Shared/NavMenu.razor b/MatrixRoomUtils.Web/Shared/NavMenu.razor index b77935d..8136715 100644 --- a/MatrixRoomUtils.Web/Shared/NavMenu.razor +++ b/MatrixRoomUtils.Web/Shared/NavMenu.razor @@ -52,10 +52,15 @@ <hr style="margin-bottom: 0em;"/> </div> <div class="nav-item px-3"> - <NavLink class="nav-link" href="MediaLocator"> - <span class="oi oi-plus" aria-hidden="true"></span> Media locator + <NavLink class="nav-link" href="KnownHomeserverList"> + <span class="oi oi-plus" aria-hidden="true"></span> Known homeserver list </NavLink> </div> + @* <div class="nav-item px-3"> *@ + @* <NavLink class="nav-link" href="MediaLocator"> *@ + @* <span class="oi oi-plus" aria-hidden="true"></span> Media locator *@ + @* </NavLink> *@ + @* </div> *@ <div class="nav-item px-3"> <h5 style="margin-left: 1em;">MRU</h5> <hr style="margin-bottom: 0em;"/> diff --git a/MatrixRoomUtils.Web/Shared/PortableDevTools.razor b/MatrixRoomUtils.Web/Shared/PortableDevTools.razor new file mode 100644 index 0000000..84e7791 --- /dev/null +++ b/MatrixRoomUtils.Web/Shared/PortableDevTools.razor @@ -0,0 +1,31 @@ + +@if (Enabled) +{ + <a href="/DevOptions">Portable devtools (enabled)</a> + <div id="PortableDevTools" style="position: fixed; bottom: 0; right: 0; min-width: 200px; min-height: 100px; background: #0002;" draggable> + <p>Cache size: @RuntimeCache.GenericResponseCache.Sum(x=>x.Value.Cache.Count)</p> + </div> +} +else { + <a href="/DevOptions">Portable devtools (disabled)</a> +} + +@code { + private bool Enabled { get; set; } = LocalStorageWrapper.Settings.DeveloperSettings.EnablePortableDevtools; + + protected override async Task OnInitializedAsync() + { + // if(!RuntimeCache.WasLoaded) + // await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); + // StateHasChanged(); + Task.Run(async () => + { + while (true) + { + await Task.Delay(100); + Enabled = LocalStorageWrapper.Settings.DeveloperSettings.EnablePortableDevtools; + StateHasChanged(); + } + }); + } +} \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Shared/RoomListItem.razor b/MatrixRoomUtils.Web/Shared/RoomListItem.razor index 15ca5c0..16ced75 100644 --- a/MatrixRoomUtils.Web/Shared/RoomListItem.razor +++ b/MatrixRoomUtils.Web/Shared/RoomListItem.razor @@ -3,17 +3,27 @@ <div style="background-color: #ffffff11; border-radius: 25px; margin: 8px; width: fit-content;"> @if (ShowOwnProfile) { - <img style="width: 32px; height: 32px; border-radius: 50%; @(hasCustomProfileAvatar ? "border-color: red; border-width: 3px; border-style: dashed;" : "")" src="@profileAvatar"/> + <img style="@(ChildContent != null ? "vertical-align: baseline;":"") width: 32px; height: 32px; border-radius: 50%; @(hasCustomProfileAvatar ? "border-color: red; border-width: 3px; border-style: dashed;" : "")" src="@profileAvatar"/> <span style="vertical-align: middle; margin-right: 8px; border-radius: 75px; @(hasCustomProfileName ? "background-color: red;" : "")">@profileName</span> <span style="vertical-align: middle; padding-right: 8px; padding-left: 0px;">-></span> } - <img style="width: 32px; height: 32px; border-radius: 50%;" src="@roomIcon"/> - <span style="vertical-align: middle; padding-right: 8px;">@roomName</span> + <img style="@(ChildContent != null ? "vertical-align: baseline;":"") width: 32px; height: 32px; border-radius: 50%;" src="@roomIcon"/> + <div style="display: inline-block;"> + <span style="vertical-align: middle; padding-right: 8px;">@roomName</span> + @if (ChildContent != null) + { + @ChildContent + } + </div> + </div> @code { [Parameter] + public RenderFragment? ChildContent { get; set; } + + [Parameter] public Room Room { get; set; } [Parameter] @@ -33,8 +43,9 @@ protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); - - if(!RuntimeCache.WasLoaded) { + + if (!RuntimeCache.WasLoaded) + { Console.WriteLine("Loading from local storage"); await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); } @@ -47,6 +58,10 @@ } Room = await RuntimeCache.CurrentHomeServer.GetRoom(RoomId); } + else + { + RoomId = Room.RoomId; + } roomName = await Room.GetNameAsync(); if (roomName == null) @@ -66,8 +81,8 @@ if (ShowOwnProfile) { - var profile = await RuntimeCache.CurrentHomeServer.GetProfile(RuntimeCache.CurrentHomeServer.UserId, debounce: true); - + var profile = await RuntimeCache.CurrentHomeServer.GetProfile(RuntimeCache.CurrentHomeServer.UserId, debounce: true); + var memberState = await Room.GetStateAsync("m.room.member", RuntimeCache.CurrentHomeServer.UserId); if (memberState.HasValue) { @@ -86,7 +101,7 @@ { hasCustomProfileName = _name.GetString() != profile.DisplayName; profileName = _name.GetString(); - // Console.WriteLine($"{profile.DisplayName} - {_name.GetString()}: {hasCustomProfileName}"); + // Console.WriteLine($"{profile.DisplayName} - {_name.GetString()}: {hasCustomProfileName}"); } else { @@ -94,7 +109,7 @@ } } } - if(Random.Shared.Next(100) == 1) + if (Random.Shared.Next(100) == 1) await LocalStorageWrapper.SaveToLocalStorage(LocalStorage); } |