@page "/EditPublicProfile"
@using Microsoft.AspNetCore.Authorization;
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
@using MyRecipes2.Shared;
@using MyRecipes2.Client.Services;
@inject HttpClient Http;
@inject AuthenticationStateProvider AuthenticationStateProvider;
@inject NavigationManager NavManager;
@inject UtilityService UtilityService;
@if (userDetails != null)
{
<div>
<h1>Profile</h1>
<h2>@userDetails.Username</h2>
</div>
}
<div>
<ImageEditor @ref="imageEditor"></ImageEditor>
</div>
@if (userDetails != null)
{
<div class="form-group">
<textarea @bind="bio" class="form-control" rows="5" style="resize: none;"></textarea>
</div>
}
<div>
<button class="btn btn-primary mb-2" @onclick="ClickUpdate">Save Changes</button>
</div>
@code {
private UserDto userDetails;
private string bio { get; set; }
private string UserId;
ImageEditor imageEditor { get; set; }
protected override async Task OnInitializedAsync()
{
try
{
UserId = await UtilityService.GetUserId();
// Get user details
userDetails = await Http.GetFromJsonAsync<UserDto>($"PublicProfile/Data/{UserId}");
bio = userDetails.Bio;
imageEditor.SetImageId(userDetails.ProfileImageId);
StateHasChanged();
}
catch (AccessTokenNotAvailableException exception)
{
exception.Redirect();
}
}
private void Redirect()
{
NavManager.NavigateTo($"/");
}
protected async void ClickUpdate()
{
UserDto request = new UserDto();
request.ProfileImageId = imageEditor.ImageId;
request.Bio = bio;
await Http.PutAsJsonAsync<UserDto>($"PublicProfile/Edit/{UserId}", request);
NavManager.NavigateTo($"PublicProfile/{UserId}");
}
}