about summary refs log tree commit diff
path: root/MatrixUtils.Web/Shared/UserListItem.razor
diff options
context:
space:
mode:
Diffstat (limited to 'MatrixUtils.Web/Shared/UserListItem.razor')
-rw-r--r--MatrixUtils.Web/Shared/UserListItem.razor44
1 files changed, 44 insertions, 0 deletions
diff --git a/MatrixUtils.Web/Shared/UserListItem.razor b/MatrixUtils.Web/Shared/UserListItem.razor
new file mode 100644
index 0000000..525296e
--- /dev/null
+++ b/MatrixUtils.Web/Shared/UserListItem.razor
@@ -0,0 +1,44 @@
+@using LibMatrix.Helpers
+@using LibMatrix.EventTypes.Spec.State
+@using LibMatrix.Homeservers
+@using LibMatrix.Responses
+<div style="background-color: #ffffff11; border-radius: 25px; margin: 8px; width: fit-Content;">
+    <img style="@(ChildContent is not null ? "vertical-align: baseline;" : "") width: 32px; height:  32px; border-radius: 50%;" src="@(string.IsNullOrWhiteSpace(User?.AvatarUrl) ? "https://api.dicebear.com/6.x/identicon/svg?seed=" + UserId : User.AvatarUrl)"/>
+    <span style="vertical-align: middle; margin-right: 8px; border-radius: 75px;">@User?.DisplayName</span>
+
+    <div style="display: inline-block;">
+        @if (ChildContent is not null) {
+            @ChildContent
+        }
+    </div>
+
+</div>
+
+@code {
+
+    [Parameter]
+    public RenderFragment? ChildContent { get; set; }
+
+    [Parameter]
+    public UserProfileResponse? User { get; set; }
+
+    [Parameter]
+    public string UserId { get; set; }
+
+    private AuthenticatedHomeserverGeneric _homeserver = null!;
+
+    protected override async Task OnInitializedAsync() {
+        _homeserver = await RMUStorage.GetCurrentSessionOrNavigate();
+        if (_homeserver is null) return;
+
+        if (User == null) {
+            if (UserId == null) {
+                throw new ArgumentNullException(nameof(UserId));
+            }
+            User = await _homeserver.GetProfileAsync(UserId);
+        }
+
+        await base.OnInitializedAsync();
+    }
+
+}
\ No newline at end of file