From fc749b3e57098740377e6eabd5d010d133256fa5 Mon Sep 17 00:00:00 2001 From: TheArcaneBrony Date: Tue, 13 Jun 2023 01:49:10 +0200 Subject: Improved many features --- .../Shared/IndexComponents/IndexUserItem.razor | 2 +- MatrixRoomUtils.Web/Shared/InlineUserItem.razor | 63 ++++++++++++++++++++++ MatrixRoomUtils.Web/Shared/RoomListItem.razor | 27 +++++----- MatrixRoomUtils.Web/Shared/RoomListItem.razor.css | 10 ++++ .../TimelineComponents/TimelineMemberItem.razor | 42 +++++++++++++++ .../TimelineComponents/TimelineMessageItem.razor | 11 ++++ .../TimelineComponents/TimelineUnknownItem.razor | 21 ++++++++ MatrixRoomUtils.Web/Shared/UserListItem.razor | 4 +- 8 files changed, 164 insertions(+), 16 deletions(-) create mode 100644 MatrixRoomUtils.Web/Shared/InlineUserItem.razor create mode 100644 MatrixRoomUtils.Web/Shared/RoomListItem.razor.css create mode 100644 MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor create mode 100644 MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor create mode 100644 MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineUnknownItem.razor (limited to 'MatrixRoomUtils.Web/Shared') diff --git a/MatrixRoomUtils.Web/Shared/IndexComponents/IndexUserItem.razor b/MatrixRoomUtils.Web/Shared/IndexComponents/IndexUserItem.razor index 42f2c09..03a7145 100644 --- a/MatrixRoomUtils.Web/Shared/IndexComponents/IndexUserItem.razor +++ b/MatrixRoomUtils.Web/Shared/IndexComponents/IndexUserItem.razor @@ -24,7 +24,7 @@ [Parameter] public UserInfo User { get; set; } = null!; - private string _avatarUrl { get; set; } + private string? _avatarUrl { get; set; } private int _roomCount { get; set; } = 0; protected override async Task OnInitializedAsync() diff --git a/MatrixRoomUtils.Web/Shared/InlineUserItem.razor b/MatrixRoomUtils.Web/Shared/InlineUserItem.razor new file mode 100644 index 0000000..56131c8 --- /dev/null +++ b/MatrixRoomUtils.Web/Shared/InlineUserItem.razor @@ -0,0 +1,63 @@ +@using MatrixRoomUtils.Core.Responses +
+ + @ProfileName + +
+ @if (ChildContent != null) + { + @ChildContent + } +
+ +
+ +@code { + + [Parameter] + public RenderFragment? ChildContent { get; set; } + + [Parameter] + public ProfileResponse User { get; set; } + + [Parameter] + public string UserId { get; set; } + + [Parameter] + public string? ProfileAvatar { get; set; } = null; + + [Parameter] + public string? ProfileName { get; set; } = null; + + + private static SemaphoreSlim _semaphoreSlim = new(128); + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); + + await _semaphoreSlim.WaitAsync(); + + var hs = await new AuthenticatedHomeServer(RuntimeCache.CurrentHomeServer.UserId, RuntimeCache.CurrentHomeServer.AccessToken, RuntimeCache.CurrentHomeServer.HomeServerDomain).Configure(); + + if (User == null) + { + if (UserId == null) + { + throw new ArgumentNullException(nameof(UserId)); + } + User = await hs.GetProfile(UserId); + } + else + { + // UserId = User.; + } + + ProfileAvatar ??= RuntimeCache.CurrentHomeServer.ResolveMediaUri(User.AvatarUrl); + ProfileName ??= User.DisplayName; + + _semaphoreSlim.Release(); + } + +} \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Shared/RoomListItem.razor b/MatrixRoomUtils.Web/Shared/RoomListItem.razor index 4990b3c..fb28c3c 100644 --- a/MatrixRoomUtils.Web/Shared/RoomListItem.razor +++ b/MatrixRoomUtils.Web/Shared/RoomListItem.razor @@ -1,11 +1,11 @@ @using MatrixRoomUtils.Core.Authentication @using System.Text.Json @using MatrixRoomUtils.Core.Extensions -
+
@if (ShowOwnProfile) { - - @profileName + + @(profileName ?? "Loading...") -> } @@ -34,10 +34,10 @@ public bool ShowOwnProfile { get; set; } = false; private string roomName { get; set; } = "Loading..."; - private string roomIcon { get; set; } = "/icon-192.png"; + private string? roomIcon { get; set; } = "/icon-192.png"; - private string profileAvatar { get; set; } = "/icon-192.png"; - private string profileName { get; set; } = "Loading..."; + private string? profileAvatar { get; set; } + private string? profileName { get; set; } private bool hasCustomProfileAvatar { get; set; } = false; private bool hasCustomProfileName { get; set; } = false; @@ -53,8 +53,8 @@ await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage); await _semaphoreSlim.WaitAsync(); - - var hs = await new AuthenticatedHomeServer(RuntimeCache.CurrentHomeServer.UserId, RuntimeCache.CurrentHomeServer.AccessToken, RuntimeCache.CurrentHomeServer.HomeServerDomain).Configure(); + + var hs = RuntimeCache.CurrentHomeServer; //await new AuthenticatedHomeServer(RuntimeCache.CurrentHomeServer.UserId, RuntimeCache.CurrentHomeServer.AccessToken, RuntimeCache.CurrentHomeServer.HomeServerDomain).Configure(); if (Room == null) { @@ -69,11 +69,7 @@ RoomId = Room.RoomId; } - roomName = await Room.GetNameAsync(); - if (roomName == null) - { - roomName = "Unnamed room: " + RoomId; - } + roomName = await Room.GetNameAsync() ?? "Unnamed room: " + RoomId; var ce = await Room.GetCreateEventAsync(); if (ce != null) @@ -143,4 +139,9 @@ await LocalStorageWrapper.SaveCacheToLocalStorage(LocalStorage); } + private void Callback(ProgressEventArgs obj) + { + Console.WriteLine("prog: " + obj.ToJson(indent: false)); + } + } \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Shared/RoomListItem.razor.css b/MatrixRoomUtils.Web/Shared/RoomListItem.razor.css new file mode 100644 index 0000000..8b9a9f6 --- /dev/null +++ b/MatrixRoomUtils.Web/Shared/RoomListItem.razor.css @@ -0,0 +1,10 @@ +/*.imageUnloaded {*/ +/* scale: 3;*/ +/* opacity: 0.5;*/ +/* transition: scale 0.5s ease-in-out;*/ +/*}*/ + +.imageLoaded { + opacity: 1; + scale: 1; + } \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor new file mode 100644 index 0000000..3803d38 --- /dev/null +++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMemberItem.razor @@ -0,0 +1,42 @@ +@using MatrixRoomUtils.Core.Extensions +@if (Event.ContentAsJsonNode["membership"]!.GetValue() == "ban") +{ + @Event.StateKey was banned +} +else if (Event.ContentAsJsonNode["membership"]!.GetValue() == "invite") +{ + @Event.StateKey was invited +} +else if (Event.ContentAsJsonNode["membership"]!.GetValue() == "join") +{ + @if (Event.ReplacesState != null) + { + @Event.StateKey changed their display name to @(Event.ContentAsJsonNode["displayname"]!.GetValue()) + } + else + { + joined + } +} +else if (Event.ContentAsJsonNode["membership"]!.GetValue() == "leave") +{ + @Event.StateKey left +} +else if (Event.ContentAsJsonNode["membership"]!.GetValue() == "knock") +{ + @Event.StateKey knocked +} +else +{ + @Event.StateKey has an unknown state: +
+        @Event.ToJson()
+    
+} + +@code { + + [Parameter] + public StateEvent Event { get; set; } + +} \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor new file mode 100644 index 0000000..8d688ea --- /dev/null +++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineMessageItem.razor @@ -0,0 +1,11 @@ +@using MatrixRoomUtils.Core.Extensions +
+    @ObjectExtensions.ToJson(Event.Content, indent: false)
+
+ +@code { + + [Parameter] + public StateEventResponse Event { get; set; } + +} \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineUnknownItem.razor b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineUnknownItem.razor new file mode 100644 index 0000000..f78bdc9 --- /dev/null +++ b/MatrixRoomUtils.Web/Shared/TimelineComponents/TimelineUnknownItem.razor @@ -0,0 +1,21 @@ +@using MatrixRoomUtils.Core.Extensions +
+ +
+ + + Unknown event type:
@Event.Type
+
+
+
+           @Event.ToJson()
+        
+
+
+ +@code { + + [Parameter] + public StateEvent Event { get; set; } + +} \ No newline at end of file diff --git a/MatrixRoomUtils.Web/Shared/UserListItem.razor b/MatrixRoomUtils.Web/Shared/UserListItem.razor index ae1fcd1..d357b0d 100644 --- a/MatrixRoomUtils.Web/Shared/UserListItem.razor +++ b/MatrixRoomUtils.Web/Shared/UserListItem.razor @@ -23,8 +23,8 @@ [Parameter] public string UserId { get; set; } - private string profileAvatar { get; set; } = "/icon-192.png"; - private string profileName { get; set; } = "Loading..."; + private string? profileAvatar { get; set; } = "/icon-192.png"; + private string? profileName { get; set; } = "Loading..."; private static SemaphoreSlim _semaphoreSlim = new(128); -- cgit 1.5.1