Improved many features
1 files changed, 63 insertions, 0 deletions
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
+<div style="background-color: #ffffff11; border-radius: 0.5em; height: 1em; display: inline-block; vertical-align: middle;" alt="@UserId">
+ <img style="@(ChildContent != null ? "vertical-align: baseline;" : "vertical-align: top;") width: 1em; height: 1em; border-radius: 50%;" src="@ProfileAvatar"/>
+ <span style="position: relative; top: -5px;">@ProfileName</span>
+
+ <div style="display: inline-block;">
+ @if (ChildContent != null)
+ {
+ @ChildContent
+ }
+ </div>
+
+</div>
+
+@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
|