Iceshrimp.NET/Iceshrimp.Frontend/Components/UserProfileCard.razor

49 lines
No EOL
1.5 KiB
Text

@inject ApiService Api;
@using Iceshrimp.Frontend.Core.Services
@using Iceshrimp.Shared.Schemas.Web
@inject NavigationManager NavigationManager;
@if (UserProfile != null)
{
<div @onclick="Open" class="profile-card">
<div class="header">
<div>
<img class="avatar" src="@User.AvatarUrl"/>
</div>
<div class="name-section">
<div class="name">@User.DisplayName</div>
<div class="identifier">
@@@User.Username
@if (User.Host != null)
{
var host = $"@{User.Host}";
@host
}
</div>
</div>
</div>
@if (ShowBio)
{
<div class="bio">
<MfmText Text="@UserProfile.Bio"/>
</div>
}
</div>
}
@code {
[Parameter] [EditorRequired] public required UserResponse User { get; set; }
private UserProfileResponse? UserProfile { get; set; }
[Parameter] public bool ShowBio { get; set; } = true;
protected override async Task OnInitializedAsync()
{
UserProfile = await Api.Users.GetUserProfile(User.Id);
}
private void Open()
{
var username = $"@{User.Username}";
if (User.Host != null) username += $"@{User.Host}";
NavigationManager.NavigateTo($"/{username}");
}
}