diff options
Diffstat (limited to 'MatrixUtils.Web/Pages')
6 files changed, 108 insertions, 56 deletions
diff --git a/MatrixUtils.Web/Pages/HSEInit.razor b/MatrixUtils.Web/Pages/HSEInit.razor index b2fc0db..b76dfe6 100644 --- a/MatrixUtils.Web/Pages/HSEInit.razor +++ b/MatrixUtils.Web/Pages/HSEInit.razor @@ -3,7 +3,9 @@ @inject IJSRuntime JsRuntime <h3>HSE Initialising...</h3> <hr/> + @code { + protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); var tasks = Enumerable.Range(0, 50).Select(i => Login()).ToList(); @@ -16,7 +18,7 @@ async Task<UserAuth?> Login() { try { - var result = new UserAuth(await hsProvider.Login("http://localhost:5298", "", "")); + var result = new UserAuth(await hsProvider.Login("http://localhost:5298", $"{Guid.NewGuid().ToString()}", "")); if (result == null) { Console.WriteLine($"Failed to login!"); return null; @@ -34,4 +36,5 @@ return null; } + } \ No newline at end of file diff --git a/MatrixUtils.Web/Pages/Index.razor b/MatrixUtils.Web/Pages/Index.razor index 7c0a9f2..b3dc7d4 100644 --- a/MatrixUtils.Web/Pages/Index.razor +++ b/MatrixUtils.Web/Pages/Index.razor @@ -2,7 +2,6 @@ @inject ILogger<Index> logger @using LibMatrix.Responses @using LibMatrix -@using ArcaneLibs.Extensions @using ArcaneLibs @using System.Diagnostics @@ -34,7 +33,7 @@ Small collection of tools to do not-so-everyday things. <b>@session.UserInfo.DisplayName</b> on <b>@_auth.Homeserver</b><br/> </p> <span style="display: inline-block; width: 128px;">@session.UserInfo.RoomCount rooms</span> - <a style="color: #888888" href="@("/ServerInfo/" + session.Homeserver.ServerName + "/")">@session.ServerVersion.Server.Name @session.ServerVersion.Server.Version</a> + <a style="color: #888888" href="@("/ServerInfo/" + session.Homeserver?.ServerName + "/")">@session.ServerVersion?.Server.Name @session.ServerVersion?.Server.Version</a> @if (_auth.Proxy != null) { <span class="badge badge-info"> (proxied via @_auth.Proxy)</span> } @@ -132,7 +131,6 @@ Small collection of tools to do not-so-everyday things. public AuthenticatedHomeserverGeneric? Homeserver { get; set; } } - // private Dictionary<UserAuth, UserInfo> _users = new(); private readonly List<AuthInfo> _sessions = []; private readonly List<UserAuth> _offlineSessions = []; private readonly List<UserAuth> _invalidSessions = []; @@ -142,12 +140,14 @@ Small collection of tools to do not-so-everyday things. protected override async Task OnInitializedAsync() { Console.WriteLine("Index.OnInitializedAsync"); + logger.LogDebug("Initialising index page"); _currentSession = await RMUStorage.GetCurrentToken(); _sessions.Clear(); _offlineSessions.Clear(); var tokens = await RMUStorage.GetAllTokens(); scannedSessions = 0; totalSessions = tokens.Count; + logger.LogDebug("Found {0} tokens", totalSessions); if (tokens is not { Count: > 0 }) { Console.WriteLine("No tokens found, trying migration from MRU..."); await RMUStorage.MigrateFromMRU(); @@ -166,7 +166,7 @@ Small collection of tools to do not-so-everyday things. if ((!string.IsNullOrWhiteSpace(token.Proxy) && offlineServers.Contains(token.Proxy)) || offlineServers.Contains(token.Homeserver)) { _offlineSessions.Add(token); sema.Release(); - scannedSessions++; + scannedSessions++; return; } @@ -192,10 +192,17 @@ Small collection of tools to do not-so-everyday things. } } catch (MatrixException e) { - if (e is { ErrorCode: "M_UNKNOWN_TOKEN" }) _invalidSessions.Add(token); - else throw; + if (e is { ErrorCode: "M_UNKNOWN_TOKEN" }) { + logger.LogWarning("Got unknown token error for {0} via {1}", token.UserId, token.Homeserver); + _invalidSessions.Add(token); + } + else { + logger.LogError("Failed to get info for {0} via {1}: {2}", token.UserId, token.Homeserver, e); + throw; + } } - catch { + catch (Exception e) { + logger.LogError("Failed to get info for {0} via {1}: {2}", token.UserId, token.Homeserver, e); if (!string.IsNullOrWhiteSpace(token.Proxy)) { offlineServers.Add(token.Proxy); @@ -211,7 +218,7 @@ Small collection of tools to do not-so-everyday things. }).ToList(); await Task.WhenAll(tasks); scannedSessions = totalSessions; - + await base.OnInitializedAsync(); } @@ -239,7 +246,6 @@ Small collection of tools to do not-so-everyday things. await RMUStorage.RemoveToken(auth); if ((await RMUStorage.GetCurrentToken())?.AccessToken == auth.AccessToken) await RMUStorage.SetCurrentToken((await RMUStorage.GetAllTokens() ?? throw new InvalidOperationException()).FirstOrDefault()); - // await OnInitializedAsync(); StateHasChanged(); } @@ -247,7 +253,6 @@ Small collection of tools to do not-so-everyday things. Console.WriteLine($"Switching to {auth.Homeserver} {auth.UserId} via {auth.Proxy}"); await RMUStorage.SetCurrentToken(auth); _currentSession = auth; - // await OnInitializedAsync(); StateHasChanged(); } diff --git a/MatrixUtils.Web/Pages/Rooms/Index2Components/MainTabComponents/MainTabSpaceItem.razor b/MatrixUtils.Web/Pages/Rooms/Index2Components/MainTabComponents/MainTabSpaceItem.razor index 4216824..7a3b27b 100644 --- a/MatrixUtils.Web/Pages/Rooms/Index2Components/MainTabComponents/MainTabSpaceItem.razor +++ b/MatrixUtils.Web/Pages/Rooms/Index2Components/MainTabComponents/MainTabSpaceItem.razor @@ -1,17 +1,34 @@ @using MatrixUtils.Abstractions -<div class="spaceListItem" onclick="@ToggleSpace"> +<div class="spaceListItem" style="@(SelectedSpace == Space ? "background-color: #FFFFFF33;" : "")" onclick="@SelectSpace"> + @if (IsSpaceOpened()) { + <span onclick="@ToggleSpace">▼ </span> + } + else { + <span onclick="@ToggleSpace">▶ </span> + } + <MxcImage Circular="true" Height="32" Width="32" Homeserver="Space.Room.Homeserver" MxcUri="@Space.RoomIcon"></MxcImage> <span class="spaceNameEllipsis">@Space.RoomName</span> + + @if (IsSpaceOpened()) { + <span>meow</span> + } </div> @code { [Parameter] public RoomInfo Space { get; set; } + + [Parameter] + public RoomInfo SelectedSpace { get; set; } + + [Parameter] + public EventCallback<RoomInfo> SelectedSpaceChanged { get; set; } [Parameter] public List<RoomInfo> OpenedSpaces { get; set; } - + protected override Task OnInitializedAsync() { Space.PropertyChanged += (sender, args) => { StateHasChanged(); }; return base.OnInitializedAsync(); @@ -20,8 +37,20 @@ public void ToggleSpace() { if (OpenedSpaces.Contains(Space)) { OpenedSpaces.Remove(Space); - } else { + } + else { OpenedSpaces.Add(Space); } } -} \ No newline at end of file + + public void SelectSpace() { + SelectedSpace = Space; + SelectedSpaceChanged.InvokeAsync(Space); + } + + public bool IsSpaceOpened() { + return OpenedSpaces.Contains(Space); + } + +} + diff --git a/MatrixUtils.Web/Pages/Rooms/Index2Components/MainTabComponents/MainTabSpaceItem.razor.css b/MatrixUtils.Web/Pages/Rooms/Index2Components/MainTabComponents/MainTabSpaceItem.razor.css index c174567..a88975b 100644 --- a/MatrixUtils.Web/Pages/Rooms/Index2Components/MainTabComponents/MainTabSpaceItem.razor.css +++ b/MatrixUtils.Web/Pages/Rooms/Index2Components/MainTabComponents/MainTabSpaceItem.razor.css @@ -5,11 +5,15 @@ text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; - width: calc(100% - 38px); + width: calc(100% - 64px); } .spaceListItem { display: block; width: 100%; height: 50px; +} + +.spaceListItem > img { + display: inline-block; } \ No newline at end of file diff --git a/MatrixUtils.Web/Pages/Rooms/Index2Components/RoomsIndex2MainTab.razor b/MatrixUtils.Web/Pages/Rooms/Index2Components/RoomsIndex2MainTab.razor index 2b7c5ac..b163a52 100644 --- a/MatrixUtils.Web/Pages/Rooms/Index2Components/RoomsIndex2MainTab.razor +++ b/MatrixUtils.Web/Pages/Rooms/Index2Components/RoomsIndex2MainTab.razor @@ -31,11 +31,17 @@ <div class="col-3" style="background-color: #ffffff22;"> <LinkButton>Uncategorised rooms</LinkButton> @foreach (var space in GetTopLevelSpaces()) { - @RecursingSpaceChildren(space) + @* @RecursingSpaceChildren(space) *@ + <MainTabSpaceItem Space="space" OpenedSpaces="OpenedSpaces" @bind-SelectedSpace="SelectedSpace" /> } </div> <div class="col-9" style="background-color: #ff00ff66;"> <p>Placeholder for rooms list...</p> + @if (SelectedSpace != null) { + foreach (var room in GetSpaceChildRooms(SelectedSpace)) { + <p>@room.RoomName</p> + } + } </div> </div> </div> @@ -116,48 +122,54 @@ var childSpaces = children.Where(x => x.RoomType == "m.space").ToList(); return childSpaces; } + + private List<RoomInfo> GetSpaceChildRooms(RoomInfo space) { + var children = GetSpaceChildren(space); + var childRooms = children.Where(x => x.RoomType != "m.space").ToList(); + return childRooms; + } private RoomInfo? SelectedSpace { get; set; } private List<RoomInfo> OpenedSpaces { get; set; } = new List<RoomInfo>(); - private RenderFragment RecursingSpaceChildren(RoomInfo space, List<RoomInfo>? parents = null, int depth = 0) { - parents ??= []; - var totalSw = Stopwatch.StartNew(); - var children = GetSpaceChildSpaces(space); - - var randomColor = RandomNumberGenerator.GetBytes(3).Append((byte)0x33).ToArray().AsHexString().Replace(" ", ""); - var isExpanded = OpenedSpaces.Contains(space); - - // Console.WriteLine($"RecursingSpaceChildren::FetchData - Depth: {depth}, Space: {space.RoomName}, Children: {children.Count} - {totalSw.Elapsed}"); - - // var renderSw = Stopwatch.StartNew(); - var rf = new RenderFragment(builder => { - builder.OpenElement(0, "div"); - //space list entry render fragment - // builder.AddContent(1, SpaceListEntry(space)); - builder.OpenComponent<MainTabSpaceItem>(1); - builder.AddAttribute(2, "Space", space); - builder.AddAttribute(2, "OpenedSpaces", OpenedSpaces); - builder.CloseComponent(); - builder.CloseElement(); - //space children render fragment - if (isExpanded) { - builder.OpenElement(2, "div"); - builder.AddAttribute(3, "style", "padding-left: 10px;"); - foreach (var child in children) { - builder.AddContent(4, RecursingSpaceChildren(child, parents.Append(space).ToList(), depth + 1)); - } - - builder.CloseElement(); - } - }); - - // Console.WriteLine($"RecursingSpaceChildren::Render - Depth: {depth}, Space: {space.RoomName}, Children: {children.Count} - {renderSw.Elapsed}"); - if (totalSw.ElapsedMilliseconds > 20) - Console.WriteLine($"RecursingSpaceChildren::Total - Depth: {depth}, Space: {space.RoomName}, Children: {children.Count} - {totalSw.Elapsed}"); - // Console.WriteLine($"RecursingSpaceChildren::Total - Depth: {depth}, Space: {space.RoomName}, Children: {children.Count} - {totalSw.Elapsed}"); - return rf; - } + // private RenderFragment RecursingSpaceChildren(RoomInfo space, List<RoomInfo>? parents = null, int depth = 0) { + // parents ??= []; + // var totalSw = Stopwatch.StartNew(); + // var children = GetSpaceChildSpaces(space); + // + // var randomColor = RandomNumberGenerator.GetBytes(3).Append((byte)0x33).ToArray().AsHexString().Replace(" ", ""); + // var isExpanded = OpenedSpaces.Contains(space); + // + // // Console.WriteLine($"RecursingSpaceChildren::FetchData - Depth: {depth}, Space: {space.RoomName}, Children: {children.Count} - {totalSw.Elapsed}"); + // + // // var renderSw = Stopwatch.StartNew(); + // var rf = new RenderFragment(builder => { + // builder.OpenElement(0, "div"); + // //space list entry render fragment + // // builder.AddContent(1, SpaceListEntry(space)); + // builder.OpenComponent<MainTabSpaceItem>(1); + // builder.AddAttribute(2, "Space", space); + // builder.AddAttribute(2, "OpenedSpaces", OpenedSpaces); + // builder.CloseComponent(); + // builder.CloseElement(); + // //space children render fragment + // if (isExpanded) { + // builder.OpenElement(2, "div"); + // builder.AddAttribute(3, "style", "padding-left: 10px;"); + // foreach (var child in children) { + // builder.AddContent(4, RecursingSpaceChildren(child, parents.Append(space).ToList(), depth + 1)); + // } + // + // builder.CloseElement(); + // } + // }); + // + // // Console.WriteLine($"RecursingSpaceChildren::Render - Depth: {depth}, Space: {space.RoomName}, Children: {children.Count} - {renderSw.Elapsed}"); + // if (totalSw.ElapsedMilliseconds > 20) + // Console.WriteLine($"RecursingSpaceChildren::Total - Depth: {depth}, Space: {space.RoomName}, Children: {children.Count} - {totalSw.Elapsed}"); + // // Console.WriteLine($"RecursingSpaceChildren::Total - Depth: {depth}, Space: {space.RoomName}, Children: {children.Count} - {totalSw.Elapsed}"); + // return rf; + // } // private RenderFragment SpaceListEntry(RoomInfo space) { // return builder => { diff --git a/MatrixUtils.Web/Pages/Tools/MediaLocator.razor b/MatrixUtils.Web/Pages/Tools/MediaLocator.razor index 0818d6d..6e87926 100644 --- a/MatrixUtils.Web/Pages/Tools/MediaLocator.razor +++ b/MatrixUtils.Web/Pages/Tools/MediaLocator.razor @@ -88,7 +88,6 @@ homeservers.Clear(); var lines = content.Split("\n"); - var rhs = new RemoteHomeserver("rory.gay"); var sem = new SemaphoreSlim(128, 128); lines.ToList().ForEach(async line => { await sem.WaitAsync(); |