From 83029c478f411bcadd3be53ac4dc53d88b3c8462 Mon Sep 17 00:00:00 2001 From: "Emma@Rory&" Date: Mon, 14 Aug 2023 19:46:33 +0200 Subject: Code cleanup --- LibMatrix | 2 +- MatrixRoomUtils.Desktop/App.axaml.cs | 4 +- .../Components/NavigationStack.axaml | 2 +- .../Components/NavigationStack.axaml.cs | 7 ++-- .../Components/RoomListEntry.axaml | 2 +- .../Components/RoomListEntry.axaml.cs | 7 ++-- MatrixRoomUtils.Desktop/FileStorageProvider.cs | 14 ++++--- MatrixRoomUtils.Desktop/MRUDesktopConfiguration.cs | 10 ++--- MatrixRoomUtils.Desktop/MRUStorageWrapper.cs | 40 ++++++------------- MatrixRoomUtils.Desktop/MainWindow.axaml | 3 +- MatrixRoomUtils.Desktop/MainWindow.axaml.cs | 1 - MatrixRoomUtils.Desktop/Program.cs | 4 +- MatrixRoomUtils.Desktop/RoomInfo.cs | 6 +-- MatrixRoomUtils.Desktop/SentryService.cs | 4 +- .../Classes/LocalStorageProviderService.cs | 6 ++- MatrixRoomUtils.Web/Classes/MRUStorageWrapper.cs | 13 ++---- .../DefaultRoomCreationTemplate.cs | 4 +- MatrixRoomUtils.Web/Classes/RoomInfo.cs | 4 +- .../Classes/SessionStorageProviderService.cs | 6 ++- MatrixRoomUtils.Web/Pages/HSAdmin/RoomQuery.razor | 3 +- MatrixRoomUtils.Web/Pages/Index.razor | 9 ++--- MatrixRoomUtils.Web/Pages/InvalidSession.razor | 17 +++++--- .../Pages/KnownHomeserverList.razor | 8 ++-- MatrixRoomUtils.Web/Pages/MediaLocator.razor | 3 +- MatrixRoomUtils.Web/Pages/ModalTest.razor | 8 ++-- MatrixRoomUtils.Web/Pages/Rooms/Create.razor | 13 ++---- MatrixRoomUtils.Web/Pages/Rooms/Index.razor | 46 +++++++++++----------- MatrixRoomUtils.Web/Pages/Rooms/PolicyList.razor | 2 +- MatrixRoomUtils.Web/Pages/Rooms/Space.razor | 32 ++++++++------- MatrixRoomUtils.Web/Pages/Rooms/StateEditor.razor | 14 +++---- MatrixRoomUtils.Web/Pages/Rooms/StateViewer.razor | 12 +++--- MatrixRoomUtils.Web/Pages/Rooms/Timeline.razor | 2 +- MatrixRoomUtils.Web/Program.cs | 2 +- MatrixRoomUtils.Web/Shared/EditablePre.razor | 5 ++- MatrixRoomUtils.Web/Shared/InlineUserItem.razor | 2 +- MatrixRoomUtils.Web/Shared/ModalWindow.razor | 14 +++---- MatrixRoomUtils.Web/Shared/RoomList.razor | 2 +- .../RoomListComponents/RoomListCategory.razor | 10 ++--- .../Shared/RoomListComponents/RoomListSpace.razor | 9 +++-- MatrixRoomUtils.Web/Shared/RoomListItem.razor | 2 +- .../TimelineComponents/TimelineMemberItem.razor | 44 ++++++++++----------- .../TimelineComponents/TimelineMessageItem.razor | 2 +- .../TimelineRoomCreateItem.razor | 2 +- MatrixRoomUtils.sln.DotSettings.user | 2 +- MxApiExtensions | 2 +- 45 files changed, 200 insertions(+), 206 deletions(-) diff --git a/LibMatrix b/LibMatrix index 15d2ed6..cb8846a 160000 --- a/LibMatrix +++ b/LibMatrix @@ -1 +1 @@ -Subproject commit 15d2ed6a992619b72ffd692a37e93f53ae948ab7 +Subproject commit cb8846a7a3310f8513989da5aadb5202f048a1b3 diff --git a/MatrixRoomUtils.Desktop/App.axaml.cs b/MatrixRoomUtils.Desktop/App.axaml.cs index 20f2a3c..e0b50a5 100644 --- a/MatrixRoomUtils.Desktop/App.axaml.cs +++ b/MatrixRoomUtils.Desktop/App.axaml.cs @@ -20,12 +20,12 @@ public partial class App : Application { services.AddSingleton(); services.AddSingleton(); services.AddSingleton(x => - new( + new TieredStorageService( cacheStorageProvider: new FileStorageProvider(x.GetService().CacheStoragePath), dataStorageProvider: new FileStorageProvider(x.GetService().DataStoragePath) ) ); - services.AddSingleton(new RoryLibMatrixConfiguration() { + services.AddSingleton(new RoryLibMatrixConfiguration { AppName = "MatrixRoomUtils.Desktop" }); services.AddRoryLibMatrixServices(); diff --git a/MatrixRoomUtils.Desktop/Components/NavigationStack.axaml b/MatrixRoomUtils.Desktop/Components/NavigationStack.axaml index e0812ec..c773b8d 100644 --- a/MatrixRoomUtils.Desktop/Components/NavigationStack.axaml +++ b/MatrixRoomUtils.Desktop/Components/NavigationStack.axaml @@ -3,7 +3,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="MatrixRoomUtils.Desktop.NavigationStack"> + x:Class="MatrixRoomUtils.Desktop.Components.NavigationStack"> diff --git a/MatrixRoomUtils.Desktop/Components/NavigationStack.axaml.cs b/MatrixRoomUtils.Desktop/Components/NavigationStack.axaml.cs index f4e0fed..d6343e2 100644 --- a/MatrixRoomUtils.Desktop/Components/NavigationStack.axaml.cs +++ b/MatrixRoomUtils.Desktop/Components/NavigationStack.axaml.cs @@ -1,8 +1,7 @@ -using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; -namespace MatrixRoomUtils.Desktop; +namespace MatrixRoomUtils.Desktop.Components; public partial class NavigationStack : UserControl { public NavigationStack() { @@ -20,7 +19,7 @@ public partial class NavigationStack : UserControl { Button btn = new() { Content = item.Name }; - btn.Click += (sender, args) => { + btn.Click += (_, _) => { PopTo(_stack.IndexOf(item)); buildView(); }; @@ -41,7 +40,7 @@ public partial class NavigationStack : UserControl { public NavigationStackItem? Current => _stack.LastOrDefault(); public void Push(string name, UserControl view) { - _stack.Add(new NavigationStackItem() { + _stack.Add(new NavigationStackItem { Name = name, View = view }); diff --git a/MatrixRoomUtils.Desktop/Components/RoomListEntry.axaml b/MatrixRoomUtils.Desktop/Components/RoomListEntry.axaml index c80ef2f..09fe52b 100644 --- a/MatrixRoomUtils.Desktop/Components/RoomListEntry.axaml +++ b/MatrixRoomUtils.Desktop/Components/RoomListEntry.axaml @@ -3,7 +3,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="250" d:DesignHeight="32" - x:Class="MatrixRoomUtils.Desktop.RoomListEntry"> + x:Class="MatrixRoomUtils.Desktop.Components.RoomListEntry"> diff --git a/MatrixRoomUtils.Desktop/Components/RoomListEntry.axaml.cs b/MatrixRoomUtils.Desktop/Components/RoomListEntry.axaml.cs index f29db63..359deb3 100644 --- a/MatrixRoomUtils.Desktop/Components/RoomListEntry.axaml.cs +++ b/MatrixRoomUtils.Desktop/Components/RoomListEntry.axaml.cs @@ -5,10 +5,9 @@ using LibMatrix; using LibMatrix.Helpers; using LibMatrix.Services; using LibMatrix.StateEventTypes.Spec; -using MatrixRoomUtils.Web.Classes; using Microsoft.Extensions.DependencyInjection; -namespace MatrixRoomUtils.Desktop; +namespace MatrixRoomUtils.Desktop.Components; public partial class RoomListEntry : UserControl { private readonly IServiceScopeFactory _serviceScopeFactory; @@ -29,7 +28,7 @@ public partial class RoomListEntry : UserControl { private async Task GetRoomName() { try { var nameEvent = await _roomInfo.GetStateEvent("m.room.name"); - if (nameEvent is not null && nameEvent.TypedContent is RoomNameEventData nameData) + if (nameEvent?.TypedContent is RoomNameEventData nameData) RoomName.Content = nameData.Name; } catch (MatrixException e) { @@ -41,7 +40,7 @@ public partial class RoomListEntry : UserControl { private async Task GetRoomIcon() { try { var avatarEvent = await _roomInfo.GetStateEvent("m.room.avatar"); - if (avatarEvent is not null && avatarEvent.TypedContent is RoomAvatarEventData avatarData) { + if (avatarEvent?.TypedContent is RoomAvatarEventData avatarData) { var mxcUrl = avatarData.Url; await using var svc = _serviceScopeFactory.CreateAsyncScope(); var hs = await svc.ServiceProvider.GetService().GetCurrentSessionOrPrompt(); diff --git a/MatrixRoomUtils.Desktop/FileStorageProvider.cs b/MatrixRoomUtils.Desktop/FileStorageProvider.cs index 36a3c7e..b3850b0 100644 --- a/MatrixRoomUtils.Desktop/FileStorageProvider.cs +++ b/MatrixRoomUtils.Desktop/FileStorageProvider.cs @@ -23,20 +23,24 @@ public class FileStorageProvider : IStorageProvider { } } - public async Task SaveObjectAsync(string key, T value) => await File.WriteAllTextAsync(Path.Join(TargetPath, key), ObjectExtensions.ToJson(value)); + public async Task SaveObjectAsync(string key, T value) => await File.WriteAllTextAsync(Path.Join(TargetPath, key), value?.ToJson()); public async Task LoadObjectAsync(string key) => JsonSerializer.Deserialize(await File.ReadAllTextAsync(Path.Join(TargetPath, key))); - public async Task ObjectExistsAsync(string key) => File.Exists(Path.Join(TargetPath, key)); + public Task ObjectExistsAsync(string key) => Task.FromResult(File.Exists(Path.Join(TargetPath, key))); - public async Task> GetAllKeysAsync() => Directory.GetFiles(TargetPath).Select(Path.GetFileName).ToList(); + public Task> GetAllKeysAsync() => Task.FromResult(Directory.GetFiles(TargetPath).Select(Path.GetFileName).ToList()); + + public Task DeleteObjectAsync(string key) { + File.Delete(Path.Join(TargetPath, key)); + return Task.CompletedTask; + } - public async Task DeleteObjectAsync(string key) => File.Delete(Path.Join(TargetPath, key)); public async Task SaveStreamAsync(string key, Stream stream) { Directory.CreateDirectory(Path.GetDirectoryName(Path.Join(TargetPath, key)) ?? throw new InvalidOperationException()); await using var fileStream = File.Create(Path.Join(TargetPath, key)); await stream.CopyToAsync(fileStream); } - public async Task LoadStreamAsync(string key) => File.Exists(Path.Join(TargetPath, key)) ? File.OpenRead(Path.Join(TargetPath, key)) : null; + public Task LoadStreamAsync(string key) => Task.FromResult(File.Exists(Path.Join(TargetPath, key)) ? File.OpenRead(Path.Join(TargetPath, key)) : null); } diff --git a/MatrixRoomUtils.Desktop/MRUDesktopConfiguration.cs b/MatrixRoomUtils.Desktop/MRUDesktopConfiguration.cs index 39c42cf..4f265ee 100644 --- a/MatrixRoomUtils.Desktop/MRUDesktopConfiguration.cs +++ b/MatrixRoomUtils.Desktop/MRUDesktopConfiguration.cs @@ -11,7 +11,7 @@ public class MRUDesktopConfiguration { public MRUDesktopConfiguration(ILogger logger, IConfiguration config, HostBuilderContext host) { _logger = logger; - logger.LogInformation($"Loading configuration for environment: {host.HostingEnvironment.EnvironmentName}..."); + logger.LogInformation("Loading configuration for environment: {}...", host.HostingEnvironment.EnvironmentName); config.GetSection("MRUDesktop").Bind(this); DataStoragePath = ExpandPath(DataStoragePath); CacheStoragePath = ExpandPath(CacheStoragePath); @@ -22,18 +22,18 @@ public class MRUDesktopConfiguration { public string? SentryDsn { get; set; } private static string ExpandPath(string path, bool retry = true) { - _logger.LogInformation($"Expanding path `{path}`"); + _logger.LogInformation("Expanding path `{}`", path); if (path.StartsWith("~")) { path = Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), path[1..]); } - Environment.GetEnvironmentVariables().Cast().OrderByDescending(x => x.Key.ToString().Length).ToList().ForEach(x => { + Environment.GetEnvironmentVariables().Cast().OrderByDescending(x => x.Key.ToString()!.Length).ToList().ForEach(x => { path = path.Replace($"${x.Key}", x.Value.ToString()); }); - _logger.LogInformation($"Expanded path to `{path}`"); - int tries = 0; + _logger.LogInformation("Expanded path to `{}`", path); + var tries = 0; while(retry && path.ContainsAnyOf("~$".Split())) { if(tries++ > 100) throw new Exception($"Path `{path}` contains unrecognised environment variables"); diff --git a/MatrixRoomUtils.Desktop/MRUStorageWrapper.cs b/MatrixRoomUtils.Desktop/MRUStorageWrapper.cs index 5444f24..2243092 100644 --- a/MatrixRoomUtils.Desktop/MRUStorageWrapper.cs +++ b/MatrixRoomUtils.Desktop/MRUStorageWrapper.cs @@ -4,31 +4,20 @@ using LibMatrix.Services; namespace MatrixRoomUtils.Desktop; -public class MRUStorageWrapper { - private readonly TieredStorageService _storageService; - private readonly HomeserverProviderService _homeserverProviderService; - - public MRUStorageWrapper( - TieredStorageService storageService, - HomeserverProviderService homeserverProviderService - ) { - _storageService = storageService; - _homeserverProviderService = homeserverProviderService; - } - +public class MRUStorageWrapper(TieredStorageService storageService, HomeserverProviderService homeserverProviderService) { public async Task?> GetAllTokens() { - if(!await _storageService.DataStorageProvider.ObjectExistsAsync("mru.tokens")) { + if(!await storageService.DataStorageProvider.ObjectExistsAsync("mru.tokens")) { return null; } - return await _storageService.DataStorageProvider.LoadObjectAsync>("mru.tokens") ?? + return await storageService.DataStorageProvider.LoadObjectAsync>("mru.tokens") ?? new List(); } public async Task GetCurrentToken() { - if(!await _storageService.DataStorageProvider.ObjectExistsAsync("token")) { + if(!await storageService.DataStorageProvider.ObjectExistsAsync("token")) { return null; } - var currentToken = await _storageService.DataStorageProvider.LoadObjectAsync("token"); + var currentToken = await storageService.DataStorageProvider.LoadObjectAsync("token"); var allTokens = await GetAllTokens(); if (allTokens is null or { Count: 0 }) { await SetCurrentToken(null); @@ -47,13 +36,10 @@ public class MRUStorageWrapper { } public async Task AddToken(LoginResponse loginResponse) { - var tokens = await GetAllTokens(); - if (tokens == null) { - tokens = new List(); - } + var tokens = await GetAllTokens() ?? new List(); tokens.Add(loginResponse); - await _storageService.DataStorageProvider.SaveObjectAsync("mru.tokens", tokens); + await storageService.DataStorageProvider.SaveObjectAsync("mru.tokens", tokens); if(await GetCurrentToken() is null) await SetCurrentToken(loginResponse); } @@ -64,7 +50,7 @@ public class MRUStorageWrapper { return null; } - return await _homeserverProviderService.GetAuthenticatedWithToken(token.Homeserver, token.AccessToken); + return await homeserverProviderService.GetAuthenticatedWithToken(token.Homeserver, token.AccessToken); } public async Task GetCurrentSessionOrPrompt() { @@ -87,7 +73,7 @@ public class MRUStorageWrapper { if (session is null) { // _navigationManager.NavigateTo("/Login"); var wnd = new LoginWindow(this); - wnd.ShowDialog(MainWindow.Instance); + await wnd.ShowDialog(MainWindow.Instance); while (wnd.IsVisible) await Task.Delay(100); session = await GetCurrentSession(); } @@ -112,16 +98,14 @@ public class MRUStorageWrapper { } tokens.RemoveAll(x => x.AccessToken == auth.AccessToken); - await _storageService.DataStorageProvider.SaveObjectAsync("mru.tokens", tokens); + await storageService.DataStorageProvider.SaveObjectAsync("mru.tokens", tokens); } - public async Task SetCurrentToken(LoginResponse? auth) { - _storageService.DataStorageProvider.SaveObjectAsync("token", auth); - } + public async Task SetCurrentToken(LoginResponse? auth) => await storageService.DataStorageProvider.SaveObjectAsync("token", auth); public async Task Login(string homeserver, string username, string password) { try { - return await _homeserverProviderService.Login(homeserver, username, password); + return await homeserverProviderService.Login(homeserver, username, password); } catch (MatrixException e) { if (e.ErrorCode == "M_FORBIDDEN") { diff --git a/MatrixRoomUtils.Desktop/MainWindow.axaml b/MatrixRoomUtils.Desktop/MainWindow.axaml index 464fc77..dd807b5 100644 --- a/MatrixRoomUtils.Desktop/MainWindow.axaml +++ b/MatrixRoomUtils.Desktop/MainWindow.axaml @@ -3,6 +3,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:desktop="clr-namespace:MatrixRoomUtils.Desktop" + xmlns:components="clr-namespace:MatrixRoomUtils.Desktop.Components" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="MatrixRoomUtils.Desktop.MainWindow" Title="Rory&::MatrixRoomUtils"> @@ -11,5 +12,5 @@ - + diff --git a/MatrixRoomUtils.Desktop/MainWindow.axaml.cs b/MatrixRoomUtils.Desktop/MainWindow.axaml.cs index 89f9d52..135542b 100644 --- a/MatrixRoomUtils.Desktop/MainWindow.axaml.cs +++ b/MatrixRoomUtils.Desktop/MainWindow.axaml.cs @@ -1,7 +1,6 @@ using Avalonia.Controls; using Avalonia.Data; using Avalonia.Interactivity; -using MatrixRoomUtils.Web.Classes; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; diff --git a/MatrixRoomUtils.Desktop/Program.cs b/MatrixRoomUtils.Desktop/Program.cs index f692e45..6e299eb 100644 --- a/MatrixRoomUtils.Desktop/Program.cs +++ b/MatrixRoomUtils.Desktop/Program.cs @@ -10,7 +10,7 @@ internal class Program { // SynchronizationContext-reliant code before AppMain is called: things aren't initialized // yet and stuff might break. // [STAThread] - public static async Task Main(string[] args) { + public static Task Main(string[] args) { try { BuildAvaloniaApp() .StartWithClassicDesktopLifetime(args); @@ -20,6 +20,8 @@ internal class Program { Console.WriteLine(e); throw; } + + return Task.CompletedTask; } // Avalonia configuration, don't remove; also used by visual designer. diff --git a/MatrixRoomUtils.Desktop/RoomInfo.cs b/MatrixRoomUtils.Desktop/RoomInfo.cs index fdd7d03..4e76247 100644 --- a/MatrixRoomUtils.Desktop/RoomInfo.cs +++ b/MatrixRoomUtils.Desktop/RoomInfo.cs @@ -2,7 +2,7 @@ using LibMatrix; using LibMatrix.Responses; using LibMatrix.RoomTypes; -namespace MatrixRoomUtils.Web.Classes; +namespace MatrixRoomUtils.Desktop; public class RoomInfo { public RoomInfo() { } @@ -17,10 +17,10 @@ public class RoomInfo { public async Task GetStateEvent(string type, string stateKey = "") { var @event = StateEvents.FirstOrDefault(x => x.Type == type && x.StateKey == stateKey); if (@event is not null) return @event; - @event = new StateEventResponse() { + @event = new StateEventResponse { RoomId = Room.RoomId, Type = type, - StateKey = stateKey, + StateKey = stateKey }; try { @event.TypedContent = await Room.GetStateAsync(type, stateKey); diff --git a/MatrixRoomUtils.Desktop/SentryService.cs b/MatrixRoomUtils.Desktop/SentryService.cs index ed96697..648946c 100644 --- a/MatrixRoomUtils.Desktop/SentryService.cs +++ b/MatrixRoomUtils.Desktop/SentryService.cs @@ -6,8 +6,8 @@ namespace MatrixRoomUtils.Desktop; public class SentryService : IDisposable { private IDisposable? _sentrySdkDisposable; - public SentryService(IServiceScopeFactory scopeFactory, ILogger logger) { - MRUDesktopConfiguration config = scopeFactory.CreateScope().ServiceProvider.GetRequiredService(); + public SentryService(IServiceScopeFactory scopeFactory, ILogger logger) { + var config = scopeFactory.CreateScope().ServiceProvider.GetRequiredService(); if (config.SentryDsn is null) { logger.LogWarning("Sentry DSN is not set, skipping Sentry initialisation"); return; diff --git a/MatrixRoomUtils.Web/Classes/LocalStorageProviderService.cs b/MatrixRoomUtils.Web/Classes/LocalStorageProviderService.cs index 02d691a..51aee12 100644 --- a/MatrixRoomUtils.Web/Classes/LocalStorageProviderService.cs +++ b/MatrixRoomUtils.Web/Classes/LocalStorageProviderService.cs @@ -10,9 +10,11 @@ public class LocalStorageProviderService : IStorageProvider { _localStorageService = localStorageService; } - async Task IStorageProvider.SaveAllChildrenAsync(string key, T value) => throw new NotImplementedException(); + Task IStorageProvider.SaveAllChildrenAsync(string key, T value) { + throw new NotImplementedException(); + } - async Task IStorageProvider.LoadAllChildrenAsync(string key) where T : default => throw new NotImplementedException(); + Task IStorageProvider.LoadAllChildrenAsync(string key) where T : default => throw new NotImplementedException(); async Task IStorageProvider.SaveObjectAsync(string key, T value) => await _localStorageService.SetItemAsync(key, value); diff --git a/MatrixRoomUtils.Web/Classes/MRUStorageWrapper.cs b/MatrixRoomUtils.Web/Classes/MRUStorageWrapper.cs index e9d56b9..14625fd 100644 --- a/MatrixRoomUtils.Web/Classes/MRUStorageWrapper.cs +++ b/MatrixRoomUtils.Web/Classes/MRUStorageWrapper.cs @@ -45,10 +45,7 @@ public class MRUStorageWrapper { } public async Task AddToken(LoginResponse loginResponse) { - var tokens = await GetAllTokens(); - if (tokens == null) { - tokens = new List(); - } + var tokens = await GetAllTokens() ?? new List(); tokens.Add(loginResponse); await _storageService.DataStorageProvider.SaveObjectAsync("mru.tokens", tokens); @@ -92,9 +89,9 @@ public class MRUStorageWrapper { } public class DeveloperSettings { - public bool EnableLogViewers { get; set; } = false; + public bool EnableLogViewers { get; set; } public bool EnableConsoleLogging { get; set; } = true; - public bool EnablePortableDevtools { get; set; } = false; + public bool EnablePortableDevtools { get; set; } } public async Task RemoveToken(LoginResponse auth) { @@ -107,7 +104,5 @@ public class MRUStorageWrapper { await _storageService.DataStorageProvider.SaveObjectAsync("mru.tokens", tokens); } - public async Task SetCurrentToken(LoginResponse? auth) { - _storageService.DataStorageProvider.SaveObjectAsync("token", auth); - } + public async Task SetCurrentToken(LoginResponse? auth) => await _storageService.DataStorageProvider.SaveObjectAsync("token", auth); } diff --git a/MatrixRoomUtils.Web/Classes/RoomCreationTemplates/DefaultRoomCreationTemplate.cs b/MatrixRoomUtils.Web/Classes/RoomCreationTemplates/DefaultRoomCreationTemplate.cs index b6f6d56..bb2eab9 100644 --- a/MatrixRoomUtils.Web/Classes/RoomCreationTemplates/DefaultRoomCreationTemplate.cs +++ b/MatrixRoomUtils.Web/Classes/RoomCreationTemplates/DefaultRoomCreationTemplate.cs @@ -28,7 +28,7 @@ public class DefaultRoomCreationTemplate : IRoomCreationTemplate { }, new() { Type = "m.room.join_rules", - TypedContent = new JoinRulesEventData() { + TypedContent = new JoinRulesEventData { JoinRule = "public" } }, @@ -42,7 +42,7 @@ public class DefaultRoomCreationTemplate : IRoomCreationTemplate { }, new() { Type = "m.room.avatar", - TypedContent = new RoomAvatarEventData() { + TypedContent = new RoomAvatarEventData { Url = "mxc://feline.support/UKNhEyrVsrAbYteVvZloZcFj" } } diff --git a/MatrixRoomUtils.Web/Classes/RoomInfo.cs b/MatrixRoomUtils.Web/Classes/RoomInfo.cs index 4df81ec..111bfe0 100644 --- a/MatrixRoomUtils.Web/Classes/RoomInfo.cs +++ b/MatrixRoomUtils.Web/Classes/RoomInfo.cs @@ -11,10 +11,10 @@ public class RoomInfo { public async Task GetStateEvent(string type, string stateKey = "") { var @event = StateEvents.FirstOrDefault(x => x.Type == type && x.StateKey == stateKey); if (@event is not null) return @event; - @event = new StateEventResponse() { + @event = new StateEventResponse { RoomId = Room.RoomId, Type = type, - StateKey = stateKey, + StateKey = stateKey }; try { @event.TypedContent = await Room.GetStateAsync(type, stateKey); diff --git a/MatrixRoomUtils.Web/Classes/SessionStorageProviderService.cs b/MatrixRoomUtils.Web/Classes/SessionStorageProviderService.cs index 6f11cad..a923015 100644 --- a/MatrixRoomUtils.Web/Classes/SessionStorageProviderService.cs +++ b/MatrixRoomUtils.Web/Classes/SessionStorageProviderService.cs @@ -10,9 +10,11 @@ public class SessionStorageProviderService : IStorageProvider { _sessionStorageService = sessionStorage; } - async Task IStorageProvider.SaveAllChildrenAsync(string key, T value) => throw new NotImplementedException(); + Task IStorageProvider.SaveAllChildrenAsync(string key, T value) { + throw new NotImplementedException(); + } - async Task IStorageProvider.LoadAllChildrenAsync(string key) where T : default => throw new NotImplementedException(); + Task IStorageProvider.LoadAllChildrenAsync(string key) where T : default => throw new NotImplementedException(); async Task IStorageProvider.SaveObjectAsync(string key, T value) => await _sessionStorageService.SetItemAsync(key, value); diff --git a/MatrixRoomUtils.Web/Pages/HSAdmin/RoomQuery.razor b/MatrixRoomUtils.Web/Pages/HSAdmin/RoomQuery.razor index b2928ee..679f324 100644 --- a/MatrixRoomUtils.Web/Pages/HSAdmin/RoomQuery.razor +++ b/MatrixRoomUtils.Web/Pages/HSAdmin/RoomQuery.razor @@ -158,10 +158,11 @@ public LocalRoomQueryFilter Filter { get; set; } = new(); - protected override async Task OnParametersSetAsync() { + protected override Task OnParametersSetAsync() { if (Ascending == null) Ascending = true; OrderBy ??= "name"; + return Task.CompletedTask; } private async Task Search() { diff --git a/MatrixRoomUtils.Web/Pages/Index.razor b/MatrixRoomUtils.Web/Pages/Index.razor index 65ba68b..1004ee3 100644 --- a/MatrixRoomUtils.Web/Pages/Index.razor +++ b/MatrixRoomUtils.Web/Pages/Index.razor @@ -15,16 +15,15 @@ Small collection of tools to do not-so-everyday things.
@foreach (var (auth, user) in _users.OrderByDescending(x=>x.Value.RoomCount)) { var _auth = auth; - var _user = user;
- +

- @_user.DisplayName on @_auth.Homeserver + @user.DisplayName on @_auth.Homeserver Remove

-

Member of @_user.RoomCount rooms

+

Member of @user.RoomCount rooms

} @@ -69,7 +68,7 @@ Small collection of tools to do not-so-everyday things. private class UserInfo { internal string AvatarUrl { get; set; } internal string DisplayName { get; set; } - internal int RoomCount { get; set; } = 0; + internal int RoomCount { get; set; } } private async Task RemoveUser(LoginResponse auth) { diff --git a/MatrixRoomUtils.Web/Pages/InvalidSession.razor b/MatrixRoomUtils.Web/Pages/InvalidSession.razor index 2b030ce..f555be5 100644 --- a/MatrixRoomUtils.Web/Pages/InvalidSession.razor +++ b/MatrixRoomUtils.Web/Pages/InvalidSession.razor @@ -23,6 +23,9 @@ } } +else { + Something has gone wrong and the login was not passed along! +} @code { @@ -30,13 +33,13 @@ [SupplyParameterFromQuery(Name = "ctx")] public string Context { get; set; } - private LoginResponse _login { get; set; } + private LoginResponse? _login { get; set; } - private bool _showRefreshDialog { get; set; } = false; + private bool _showRefreshDialog { get; set; } private string _password { get; set; } = ""; - private MatrixException _loginException { get; set; } + private MatrixException? _loginException { get; set; } protected override async Task OnInitializedAsync() { var tokens = await MRUStorage.GetAllTokens(); @@ -55,15 +58,16 @@ } private async Task RemoveUser() { - await MRUStorage.RemoveToken(_login); - if ((await MRUStorage.GetCurrentToken()).AccessToken == _login.AccessToken) - MRUStorage.SetCurrentToken((await MRUStorage.GetAllTokens()).FirstOrDefault()); + await MRUStorage.RemoveToken(_login!); + if ((await MRUStorage.GetCurrentToken())!.AccessToken == _login!.AccessToken) + await MRUStorage.SetCurrentToken((await MRUStorage.GetAllTokens())?.FirstOrDefault()); await OnInitializedAsync(); } private async Task OpenRefreshDialog() { _showRefreshDialog = true; StateHasChanged(); + await Task.CompletedTask; } private async Task SwitchSession(LoginResponse auth) { @@ -73,6 +77,7 @@ } private async Task TryLogin() { + if(_login is null) throw new NullReferenceException("Login is null!"); try { var result = await HomeserverProvider.Login(_login.Homeserver, _login.UserId, _password); if (result is null) { diff --git a/MatrixRoomUtils.Web/Pages/KnownHomeserverList.razor b/MatrixRoomUtils.Web/Pages/KnownHomeserverList.razor index 10a2929..22a004d 100644 --- a/MatrixRoomUtils.Web/Pages/KnownHomeserverList.razor +++ b/MatrixRoomUtils.Web/Pages/KnownHomeserverList.razor @@ -78,10 +78,10 @@ else { await foreach (var state in states) { if (state.Type is not "m.room.member") continue; progress.ProcessedUsers[room].Total++; - if (!homeServers.Any(x => x.Server == state.StateKey.Split(':')[1])) { - homeServers.Add(new HomeServerInfo { Server = state.StateKey.Split(':')[1] }); - Console.WriteLine($"Added new homeserver {state.StateKey.Split(':')[1]}"); - } + + if (homeServers.Any(x => x.Server == state.StateKey.Split(':')[1])) continue; + homeServers.Add(new HomeServerInfo { Server = state.StateKey.Split(':')[1] }); + Console.WriteLine($"Added new homeserver {state.StateKey.Split(':')[1]}"); } semaphore.Release(); progress.ProcessedUsers[room].IsFinished = true; diff --git a/MatrixRoomUtils.Web/Pages/MediaLocator.razor b/MatrixRoomUtils.Web/Pages/MediaLocator.razor index 8c41440..af6e67a 100644 --- a/MatrixRoomUtils.Web/Pages/MediaLocator.razor +++ b/MatrixRoomUtils.Web/Pages/MediaLocator.razor @@ -56,7 +56,7 @@ }); } - async Task executeSearch() { + Task executeSearch() { var sem = new SemaphoreSlim(128, 128); homeservers.ForEach(async hs => { await sem.WaitAsync(); @@ -80,6 +80,7 @@ } StateHasChanged(); }); + return Task.CompletedTask; } async Task addMoreHomeservers() { diff --git a/MatrixRoomUtils.Web/Pages/ModalTest.razor b/MatrixRoomUtils.Web/Pages/ModalTest.razor index 79c7fcd..2b1c9bc 100644 --- a/MatrixRoomUtils.Web/Pages/ModalTest.razor +++ b/MatrixRoomUtils.Web/Pages/ModalTest.razor @@ -5,10 +5,10 @@ @foreach (var (key, value) in _windowInfos) { @* @value.Content *@ } -@for (int i = 0; i < 5; i++) { +@for (var i = 0; i < 5; i++) { var i1 = i; - @for (int j = 0; j < i1; j++) { + @for (var j = 0; j < i1; j++) {

@j

}
@@ -31,9 +31,9 @@ double _y = 0; double multiplier = 1; - for (int i = 0; i < 200; i++) { + for (var i = 0; i < 200; i++) { var i1 = i; - _windowInfos.Add(_windowInfos.Count, new WindowInfo() { + _windowInfos.Add(_windowInfos.Count, new WindowInfo { X = _x, Y = _y, Title = "Win" + i1, diff --git a/MatrixRoomUtils.Web/Pages/Rooms/Create.razor b/MatrixRoomUtils.Web/Pages/Rooms/Create.razor index ebf6444..3b7d000 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/Create.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/Create.razor @@ -131,7 +131,7 @@ @if (serverAcl?.Allow is null) {

No allow rules exist!

- + } else {
@@ -141,7 +141,7 @@ } @if (serverAcl?.Deny is null) {

No deny rules exist!

- + } else {
@@ -240,12 +240,7 @@ @code { private string RoomPreset { - get { - if (Presets.ContainsValue(creationEvent)) { - return Presets.First(x => x.Value == creationEvent).Key; - } - return "Not a preset"; - } + get => Presets.ContainsValue(creationEvent) ? Presets.First(x => x.Value == creationEvent).Key : "Not a preset"; set { creationEvent = Presets[value]; JsonChanged(); @@ -310,7 +305,7 @@ creationEvent.InitialState.Add(new StateEvent { Type = "m.room.member", StateKey = mxid, - TypedContent = new RoomMemberEventData() { + TypedContent = new RoomMemberEventData { Membership = "invite", Reason = "Automatically invited at room creation time." } diff --git a/MatrixRoomUtils.Web/Pages/Rooms/Index.razor b/MatrixRoomUtils.Web/Pages/Rooms/Index.razor index 89ededf..ad3a714 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/Index.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/Index.razor @@ -19,25 +19,25 @@ private ProfileResponseEventData GlobalProfile { get; set; } private SyncFilter filter = new() { - AccountData = new() { - NotTypes = new() { "*" }, + AccountData = new SyncFilter.EventFilter { + NotTypes = new List { "*" }, Limit = 1 }, - Presence = new() { - NotTypes = new() { "*" }, + Presence = new SyncFilter.EventFilter { + NotTypes = new List { "*" }, Limit = 1 }, - Room = new() { - AccountData = new() { - NotTypes = new() { "*" }, + Room = new SyncFilter.RoomFilter { + AccountData = new SyncFilter.RoomFilter.StateFilter { + NotTypes = new List { "*" }, Limit = 1 }, - Ephemeral = new() { - NotTypes = new() { "*" }, + Ephemeral = new SyncFilter.RoomFilter.StateFilter { + NotTypes = new List { "*" }, Limit = 1 }, - State = new() { - Types = new List() { + State = new SyncFilter.RoomFilter.StateFilter { + Types = new List { "m.room.name", "m.room.avatar", "m.room.create", @@ -45,8 +45,8 @@ "m.room.power_levels" } }, - Timeline = new() { - NotTypes = new() { "*" }, + Timeline = new SyncFilter.RoomFilter.StateFilter { + NotTypes = new List { "*" }, Limit = 1 } } @@ -74,9 +74,9 @@ room = Rooms.First(x => x.Room.RoomId == roomId); } else { - room = new RoomInfo() { + room = new RoomInfo { Room = await hs.GetRoom(roomId), - StateEvents = new() + StateEvents = new List() }; Rooms.Add(room); KnownRooms.Add(room); @@ -91,23 +91,23 @@ Status = "Sync complete!"; foreach (var roomInfo in Rooms) { if (!roomInfo.StateEvents.Any(x => x.Type == "m.room.name")) { - roomInfo.StateEvents.Add(new StateEventResponse() { + roomInfo.StateEvents.Add(new StateEventResponse { Type = "m.room.name", - TypedContent = new RoomNameEventData() { + TypedContent = new RoomNameEventData { Name = roomInfo.Room.RoomId } }); } if (!roomInfo.StateEvents.Any(x => x.Type == "m.room.avatar")) { - roomInfo.StateEvents.Add(new StateEventResponse() { + roomInfo.StateEvents.Add(new StateEventResponse { Type = "m.room.avatar", - TypedContent = new RoomAvatarEventData() { + TypedContent = new RoomAvatarEventData { } }); } if (!roomInfo.StateEvents.Any(x => x.Type == "org.matrix.mjolnir.shortcode")) { - roomInfo.StateEvents.Add(new StateEventResponse() { + roomInfo.StateEvents.Add(new StateEventResponse { Type = "org.matrix.mjolnir.shortcode" }); } @@ -118,10 +118,10 @@ var memberTasks = Rooms.Select(async roomInfo => { if (!roomInfo.StateEvents.Any(x => x.Type == "m.room.member" && x.StateKey == hs.WhoAmI.UserId)) { await semaphore.WaitAsync(); - roomInfo.StateEvents.Add(new StateEventResponse() { + roomInfo.StateEvents.Add(new StateEventResponse { Type = "m.room.member", StateKey = hs.WhoAmI.UserId, - TypedContent = await roomInfo.Room.GetStateAsync("m.room.member", hs.WhoAmI.UserId) ?? new RoomMemberEventData() { + TypedContent = await roomInfo.Room.GetStateAsync("m.room.member", hs.WhoAmI.UserId) ?? new RoomMemberEventData { Membership = "unknown" } }); @@ -148,7 +148,7 @@ await base.OnInitializedAsync(); } - private bool RenderContents { get; set; } = false; + private bool RenderContents { get; set; } private string _status; diff --git a/MatrixRoomUtils.Web/Pages/Rooms/PolicyList.razor b/MatrixRoomUtils.Web/Pages/Rooms/PolicyList.razor index 3297bcb..2b31389 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/PolicyList.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/PolicyList.razor @@ -114,7 +114,7 @@ else { @foreach (var policyEvent in PolicyEvents.Where(x => x.Type == "m.policy.rule.room" && (x.TypedContent as PolicyRuleStateEventData).Entity == null)) { @policyEvent.StateKey - @policyEvent.RawContent.ToJson(false, true) + @policyEvent.RawContent!.ToJson(false, true) } diff --git a/MatrixRoomUtils.Web/Pages/Rooms/Space.razor b/MatrixRoomUtils.Web/Pages/Rooms/Space.razor index 15c7c70..c37b8ab 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/Space.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/Space.razor @@ -39,17 +39,21 @@ var state = Room.GetFullStateAsync(); await foreach (var stateEvent in state) { - if (stateEvent.Type == "m.space.child") { - var roomId = stateEvent.StateKey; - var room = await hs.GetRoom(roomId); - if (room is not null) { - Rooms.Add(room); + switch (stateEvent.Type) { + case "m.space.child": { + var roomId = stateEvent.StateKey; + var room = await hs.GetRoom(roomId); + if (room is not null) { + Rooms.Add(room); + } + break; } - } - else if (stateEvent.Type == "m.room.member") { - var serverName = stateEvent.StateKey.Split(':').Last(); - if (!ServersInSpace.Contains(serverName)) { - ServersInSpace.Add(serverName); + case "m.room.member": { + var serverName = stateEvent.StateKey.Split(':').Last(); + if (!ServersInSpace.Contains(serverName)) { + ServersInSpace.Add(serverName); + } + break; } } } @@ -89,10 +93,10 @@ // await base.OnInitializedAsync(); } - private async Task JoinAllRooms() { - foreach (var room in Rooms) { - room.JoinAsync(ServersInSpace.ToArray()); - } + private Task JoinAllRooms() { + List tasks = Rooms.Select(room => room.JoinAsync(ServersInSpace.ToArray())).ToList(); + Task.WaitAll(tasks.ToArray()); + return Task.CompletedTask; } } diff --git a/MatrixRoomUtils.Web/Pages/Rooms/StateEditor.razor b/MatrixRoomUtils.Web/Pages/Rooms/StateEditor.razor index e01fca8..ef7cd51 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/StateEditor.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/StateEditor.razor @@ -73,12 +73,12 @@ FilteredEvents.Add(_ev); } StateLoaded++; - if ((DateTime.Now - _lastUpdate).TotalMilliseconds > 100) { - _lastUpdate = DateTime.Now; - status = $"Loaded {StateLoaded} state events"; - StateHasChanged(); - await Task.Delay(0); - } + + if (!((DateTime.Now - _lastUpdate).TotalMilliseconds > 100)) continue; + _lastUpdate = DateTime.Now; + status = $"Loaded {StateLoaded} state events"; + StateHasChanged(); + await Task.Delay(0); } StateHasChanged(); @@ -98,7 +98,7 @@ FilteredEvents = _FilteredEvents; if (_shownType is not null) - shownEventJson = _FilteredEvents.Where(x => x.Type == _shownType).First().RawContent.ToJson(indent: true, ignoreNull: true); + shownEventJson = _FilteredEvents.First(x => x.Type == _shownType).RawContent.ToJson(indent: true, ignoreNull: true); StateHasChanged(); } diff --git a/MatrixRoomUtils.Web/Pages/Rooms/StateViewer.razor b/MatrixRoomUtils.Web/Pages/Rooms/StateViewer.razor index cf23c36..5a48b32 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/StateViewer.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/StateViewer.razor @@ -91,12 +91,12 @@ FilteredEvents.Add(_ev); } StateLoaded++; - if ((DateTime.Now - _lastUpdate).TotalMilliseconds > 100) { - _lastUpdate = DateTime.Now; - status = $"Loaded {StateLoaded} state events"; - StateHasChanged(); - await Task.Delay(0); - } + + if (!((DateTime.Now - _lastUpdate).TotalMilliseconds > 100)) continue; + _lastUpdate = DateTime.Now; + status = $"Loaded {StateLoaded} state events"; + StateHasChanged(); + await Task.Delay(0); } StateHasChanged(); diff --git a/MatrixRoomUtils.Web/Pages/Rooms/Timeline.razor b/MatrixRoomUtils.Web/Pages/Rooms/Timeline.razor index 7fe89cc..4a5298b 100644 --- a/MatrixRoomUtils.Web/Pages/Rooms/Timeline.razor +++ b/MatrixRoomUtils.Web/Pages/Rooms/Timeline.razor @@ -45,7 +45,7 @@ private StateEventResponse GetProfileEventBefore(StateEventResponse Event) => Events.TakeWhile(x => x != Event).Last(e => e.Type == "m.room.member" && e.StateKey == Event.Sender); - private Type ComponentType(StateEventResponse Event) => Event.TypedContent switch { + private Type ComponentType(StateEvent Event) => Event.TypedContent switch { RoomMessageEventData => typeof(TimelineMessageItem), RoomMemberEventData => typeof(TimelineMemberItem), _ => typeof(TimelineUnknownItem) diff --git a/MatrixRoomUtils.Web/Program.cs b/MatrixRoomUtils.Web/Program.cs index c760108..a670378 100644 --- a/MatrixRoomUtils.Web/Program.cs +++ b/MatrixRoomUtils.Web/Program.cs @@ -33,7 +33,7 @@ builder.Services.AddBlazoredSessionStorage(config => { }); builder.Services.AddScoped(x => - new( + new TieredStorageService( cacheStorageProvider: new SessionStorageProviderService(x.GetRequiredService()), dataStorageProvider: new LocalStorageProviderService(x.GetRequiredService()) ) diff --git a/MatrixRoomUtils.Web/Shared/EditablePre.razor b/MatrixRoomUtils.Web/Shared/EditablePre.razor index e759015..acb477c 100644 --- a/MatrixRoomUtils.Web/Shared/EditablePre.razor +++ b/MatrixRoomUtils.Web/Shared/EditablePre.razor @@ -11,6 +11,9 @@ public object Id { get; set; } - private async Task Callback() => Console.WriteLine("beep"); + private Task Callback() { + Console.WriteLine("beep"); + return Task.CompletedTask; + } } \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Shared/InlineUserItem.razor b/MatrixRoomUtils.Web/Shared/InlineUserItem.razor index f3a7162..db66309 100644 --- a/MatrixRoomUtils.Web/Shared/InlineUserItem.razor +++ b/MatrixRoomUtils.Web/Shared/InlineUserItem.razor @@ -50,7 +50,7 @@ throw new ArgumentNullException(nameof(UserId)); if (MemberEvent != null) { - User = new() { + User = new ProfileResponseEventData { AvatarUrl = MemberEvent.AvatarUrl, DisplayName = MemberEvent.DisplayName }; diff --git a/MatrixRoomUtils.Web/Shared/ModalWindow.razor b/MatrixRoomUtils.Web/Shared/ModalWindow.razor index 2f001e1..beb7198 100644 --- a/MatrixRoomUtils.Web/Shared/ModalWindow.razor +++ b/MatrixRoomUtils.Web/Shared/ModalWindow.razor @@ -74,13 +74,13 @@ } private void MouseMove(MouseEventArgs obj) { - if (isDragging) { - _x += obj.ClientX - dragX; - _y += obj.ClientY - dragY; - dragX = obj.ClientX; - dragY = obj.ClientY; - StateHasChanged(); - } + if (!isDragging) return; + + _x += obj.ClientX - dragX; + _y += obj.ClientY - dragY; + dragX = obj.ClientX; + dragY = obj.ClientY; + StateHasChanged(); } } diff --git a/MatrixRoomUtils.Web/Shared/RoomList.razor b/MatrixRoomUtils.Web/Shared/RoomList.razor index dc06d90..3b057a4 100644 --- a/MatrixRoomUtils.Web/Shared/RoomList.razor +++ b/MatrixRoomUtils.Web/Shared/RoomList.razor @@ -51,7 +51,7 @@ else { await _semaphoreSlim.WaitAsync(); string roomType; try { - RoomCreateEventData createEvent = (await room.GetStateEvent("m.room.create")).TypedContent as RoomCreateEventData; + var createEvent = (await room.GetStateEvent("m.room.create")).TypedContent as RoomCreateEventData; roomType = GetRoomTypeName(createEvent.Type); if (roomType == "Room") { diff --git a/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListCategory.razor b/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListCategory.razor index c04df3f..381ecd1 100644 --- a/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListCategory.razor +++ b/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListCategory.razor @@ -38,13 +38,11 @@ private List rooms => Category.Value; private int RoomVersionDangerLevel(RoomInfo room) { - var roomVersion = room.StateEvents.FirstOrDefault(x=>x.Type == "m.room.create"); + var roomVersion = room.StateEvents.FirstOrDefault(x => x.Type == "m.room.create"); if (roomVersion is null) return 0; - var roomVersionContent = roomVersion.TypedContent as RoomCreateEventData; - if (roomVersionContent is null) return 0; - if (RoomConstants.DangerousRoomVersions.Contains(roomVersionContent.RoomVersion)) return 2; - if (roomVersionContent.RoomVersion != RoomConstants.RecommendedRoomVersion) return 1; - return 0; + return roomVersion.TypedContent is not RoomCreateEventData roomVersionContent ? 0 + : RoomConstants.DangerousRoomVersions.Contains(roomVersionContent.RoomVersion) ? 2 + : roomVersionContent.RoomVersion != RoomConstants.RecommendedRoomVersion ? 1 : 0; } } diff --git a/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListSpace.razor b/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListSpace.razor index a113f0b..0867b48 100644 --- a/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListSpace.razor +++ b/MatrixRoomUtils.Web/Shared/RoomListComponents/RoomListSpace.razor @@ -33,9 +33,9 @@ var rooms = Space.Room.AsSpace.GetRoomsAsync(); await foreach (var room in rooms) { if (Breadcrumbs.Contains(room.RoomId)) continue; - RoomInfo roomInfo = KnownRooms.FirstOrDefault(x => x.Room.RoomId == room.RoomId); + var roomInfo = KnownRooms.FirstOrDefault(x => x.Room.RoomId == room.RoomId); if (roomInfo is null) { - roomInfo = new() { + roomInfo = new RoomInfo { Room = room }; KnownRooms.Add(roomInfo); @@ -48,10 +48,11 @@ private bool _shouldRenderChildren = false; private string? _breadcrumbs; - private async Task SpaceChildrenOpened() { - if (_shouldRenderChildren) return; + private Task SpaceChildrenOpened() { + if (_shouldRenderChildren) return Task.CompletedTask; _shouldRenderChildren = true; Console.WriteLine($"[RoomList] Rendering children of {Space.Room.RoomId}"); + return Task.CompletedTask; } } diff --git a/MatrixRoomUtils.Web/Shared/RoomListItem.razor b/MatrixRoomUtils.Web/Shared/RoomListItem.razor index 6e3adc6..79844ef 100644 --- a/MatrixRoomUtils.Web/Shared/RoomListItem.razor +++ b/MatrixRoomUtils.Web/Shared/RoomListItem.razor @@ -77,7 +77,7 @@ //sweep from id to roominfo if(RoomId is not null) Room ??= await hs.GetRoom(RoomId); - if(Room is not null) RoomInfo ??= new RoomInfo() { + if(Room is not null) RoomInfo ??= new RoomInfo { Room = Room }; diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor index 8239367..d67fdab 100644 --- a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor +++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor @@ -4,31 +4,31 @@ @inherits BaseTimelineItem @if (roomMemberData is not null) { - @if (roomMemberData.Membership == "ban") { - @Event.StateKey was banned - } - else if (roomMemberData.Membership == "invite") { - @Event.StateKey was invited - } - else if (roomMemberData.Membership == "join") { - @if (Event.ReplacesState is not null) { + @switch (roomMemberData.Membership) { + case "ban": + @Event.StateKey was banned + break; + case "invite": + @Event.StateKey was invited + break; + case "join" when Event.ReplacesState is not null: @Event.StateKey changed their display name to @(roomMemberData.Displayname ?? Event.Sender) - } - else { - joined - } - } - else if (roomMemberData.Membership == "leave") { - @Event.StateKey left - } - else if (roomMemberData.Membership == "knock") { - @Event.StateKey knocked - } - else { - @Event.StateKey has an unknown state: -
+            break;
+        case "join":
+             joined
+            break;
+        case "leave":
+            @Event.StateKey left
+            break;
+        case "knock":
+            @Event.StateKey knocked
+            break;
+        default:
+            @Event.StateKey has an unknown state:
+            
         @Event.ToJson()
     
+ break; } } else { diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor index 411b750..13cce88 100644 --- a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor +++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor @@ -2,7 +2,7 @@ @inherits BaseTimelineItem
-    @ObjectExtensions.ToJson(Event.RawContent, indent: false)
+    @Event.RawContent?.ToJson(indent: false)
 
@code { diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineRoomCreateItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineRoomCreateItem.razor index b20cc1a..8053a47 100644 --- a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineRoomCreateItem.razor +++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineRoomCreateItem.razor @@ -8,7 +8,7 @@ This room is of type @(CreationEventContent.Type ?? "Untyped room (usually a chat room)")

-    @ObjectExtensions.ToJson(Event.RawContent, indent: false)
+    @Event.RawContent?.ToJson(indent: false)
 
@code { diff --git a/MatrixRoomUtils.sln.DotSettings.user b/MatrixRoomUtils.sln.DotSettings.user index 8e084e1..8f91cef 100644 --- a/MatrixRoomUtils.sln.DotSettings.user +++ b/MatrixRoomUtils.sln.DotSettings.user @@ -1,5 +1,5 @@  - DoNotShowAndRun + ShowAndRun 12 True No diff --git a/MxApiExtensions b/MxApiExtensions index 9772208..8253ca8 160000 --- a/MxApiExtensions +++ b/MxApiExtensions @@ -1 +1 @@ -Subproject commit 977220895d8127116d0000fa98088b235d4a8801 +Subproject commit 8253ca8cb96154f95854b1c1e5dd3ba53f41e5ec -- cgit 1.5.1