Extract workspace host and collapse Home partials
This commit is contained in:
@@ -1,5 +1,81 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using RpgRoller.Components;
|
||||
using RpgRoller.Contracts;
|
||||
|
||||
namespace RpgRoller.Components.Pages;
|
||||
|
||||
[ExcludeFromCodeCoverage]
|
||||
public partial class Home
|
||||
{
|
||||
private HomeViewMode CurrentView { get; set; } = HomeViewMode.Loading;
|
||||
private string? StatusMessage { get; set; }
|
||||
private bool StatusIsError { get; set; }
|
||||
private bool HasInitialized { get; set; }
|
||||
|
||||
[Inject]
|
||||
private RpgRollerApiClient ApiClient { get; set; } = default!;
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (!firstRender || HasInitialized)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
HasInitialized = true;
|
||||
await InitializeAsync();
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
private async Task InitializeAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
_ = await ApiClient.RequestAsync<MeResponse>("GET", "/api/me");
|
||||
CurrentView = HomeViewMode.Workspace;
|
||||
ClearStatus();
|
||||
}
|
||||
catch (ApiRequestException ex) when (ex.StatusCode == 401)
|
||||
{
|
||||
CurrentView = HomeViewMode.Anonymous;
|
||||
ClearStatus();
|
||||
}
|
||||
catch (ApiRequestException ex)
|
||||
{
|
||||
CurrentView = HomeViewMode.Anonymous;
|
||||
SetStatus(ex.Message, true);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnLoggedInAsync()
|
||||
{
|
||||
CurrentView = HomeViewMode.Workspace;
|
||||
ClearStatus();
|
||||
}
|
||||
|
||||
private void OnLoggedOutAsync(string? message)
|
||||
{
|
||||
CurrentView = HomeViewMode.Anonymous;
|
||||
if (string.IsNullOrWhiteSpace(message))
|
||||
{
|
||||
ClearStatus();
|
||||
return;
|
||||
}
|
||||
|
||||
var isError = message.Contains("expired", StringComparison.OrdinalIgnoreCase);
|
||||
SetStatus(message, isError);
|
||||
}
|
||||
|
||||
private void SetStatus(string message, bool isError)
|
||||
{
|
||||
StatusMessage = message;
|
||||
StatusIsError = isError;
|
||||
}
|
||||
|
||||
private void ClearStatus()
|
||||
{
|
||||
StatusMessage = null;
|
||||
StatusIsError = false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user