Fix admin menu navigation to play and management views

This commit is contained in:
2026-02-26 18:22:07 +01:00
parent c41aabc0a8
commit 52e3ae8b0f
5 changed files with 68 additions and 22 deletions

View File

@@ -22,50 +22,60 @@ public partial class Home
try
{
_ = await ApiClient.RequestAsync<MeResponse>("GET", "/api/me");
WorkspaceScreenOverride = null;
CurrentView = HomeViewMode.Workspace;
ClearStatus();
}
catch (ApiRequestException ex) when (ex.StatusCode == 401)
{
WorkspaceScreenOverride = null;
CurrentView = HomeViewMode.Anonymous;
ClearStatus();
}
catch (ApiRequestException ex)
{
WorkspaceScreenOverride = null;
CurrentView = HomeViewMode.Anonymous;
SetStatus(ex.Message, true);
}
}
private void OnLoggedInAsync()
private Task OnLoggedInAsync()
{
WorkspaceScreenOverride = null;
CurrentView = HomeViewMode.Workspace;
ClearStatus();
return InvokeAsync(StateHasChanged);
}
private void OnAdminRequested()
private Task OnAdminRequestedAsync()
{
CurrentView = HomeViewMode.Admin;
ClearStatus();
return InvokeAsync(StateHasChanged);
}
private void OnWorkspaceRequested()
private Task OnWorkspaceRequestedAsync(string screen)
{
WorkspaceScreenOverride = NormalizeWorkspaceScreen(screen) ?? "play";
CurrentView = HomeViewMode.Workspace;
ClearStatus();
return InvokeAsync(StateHasChanged);
}
private void OnLoggedOutAsync(string? message)
private Task OnLoggedOutAsync(string? message)
{
WorkspaceScreenOverride = null;
CurrentView = HomeViewMode.Anonymous;
if (string.IsNullOrWhiteSpace(message))
{
ClearStatus();
return;
return InvokeAsync(StateHasChanged);
}
var isError = message.Contains("expired", StringComparison.OrdinalIgnoreCase);
SetStatus(message, isError);
return InvokeAsync(StateHasChanged);
}
private void SetStatus(string message, bool isError)
@@ -80,7 +90,19 @@ public partial class Home
StatusIsError = false;
}
private static string? NormalizeWorkspaceScreen(string? screen)
{
if (string.Equals(screen, "management", StringComparison.OrdinalIgnoreCase))
return "management";
if (string.Equals(screen, "play", StringComparison.OrdinalIgnoreCase))
return "play";
return null;
}
private HomeViewMode CurrentView { get; set; } = HomeViewMode.Loading;
private string? WorkspaceScreenOverride { get; set; }
private string? StatusMessage { get; set; }
private bool StatusIsError { get; set; }
private bool HasInitialized { get; set; }