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();
|