Fix workspace user header null render and ignore .idea
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,6 +6,7 @@ artifacts/
|
|||||||
|
|
||||||
# IDE
|
# IDE
|
||||||
.vs/
|
.vs/
|
||||||
|
.idea/
|
||||||
.vscode/*
|
.vscode/*
|
||||||
!.vscode/launch.json
|
!.vscode/launch.json
|
||||||
!.vscode/tasks.json
|
!.vscode/tasks.json
|
||||||
|
|||||||
4
FAQ.md
4
FAQ.md
@@ -73,6 +73,10 @@ There is no separate activate button in Play. The selected character in the char
|
|||||||
`Home.razor` + `Home.razor.cs` now act as a small gateway that switches between loading, anonymous auth, and workspace views.
|
`Home.razor` + `Home.razor.cs` now act as a small gateway that switches between loading, anonymous auth, and workspace views.
|
||||||
Authenticated application state and behavior were moved into `Components/Pages/Workspace.razor`, while reusable concern UI remains under `Components/Pages/HomeControls/`.
|
Authenticated application state and behavior were moved into `Components/Pages/Workspace.razor`, while reusable concern UI remains under `Components/Pages/HomeControls/`.
|
||||||
|
|
||||||
|
## Why does the workspace header sometimes show "Loading user..." briefly?
|
||||||
|
|
||||||
|
`Workspace` initializes authenticated session data after the first render (`OnAfterRenderAsync`). During that first render pass, the header now intentionally shows a null-safe fallback label instead of dereferencing user fields before `/api/me` has been loaded.
|
||||||
|
|
||||||
## Why is auth form state kept in `AuthSection` instead of `Home`?
|
## Why is auth form state kept in `AuthSection` instead of `Home`?
|
||||||
|
|
||||||
Auth inputs, validation, and submit workflows are transient UI concerns, so they now live in `AuthSection`. `Home` keeps shared session/workspace state and cross-control refresh/orchestration only.
|
Auth inputs, validation, and submit workflows are transient UI concerns, so they now live in `AuthSection`. `Home` keeps shared session/workspace state and cross-control refresh/orchestration only.
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ Tracking against `UX.md` tasks and decisions.
|
|||||||
- Legacy TypeScript frontend/runtime artifacts: removed
|
- Legacy TypeScript frontend/runtime artifacts: removed
|
||||||
- Home was simplified to a minimal gateway (`Loading` / `Anonymous` / `Workspace`) in a single `Home.razor.cs` class.
|
- Home was simplified to a minimal gateway (`Loading` / `Anonymous` / `Workspace`) in a single `Home.razor.cs` class.
|
||||||
- The authenticated workspace shell/state/behavior was moved to `Components/Pages/Workspace.razor`.
|
- The authenticated workspace shell/state/behavior was moved to `Components/Pages/Workspace.razor`.
|
||||||
|
- Workspace header user identity rendering is now null-safe during first render (`Loading user...` fallback until `/api/me` loads).
|
||||||
- Concern controls now own their local form state and mutation workflows; the workspace host handles shared cross-control state refresh.
|
- Concern controls now own their local form state and mutation workflows; the workspace host handles shared cross-control state refresh.
|
||||||
- Skill create/edit flow is now owned by `CharacterPanel` (where characters and their skills are presented together).
|
- Skill create/edit flow is now owned by `CharacterPanel` (where characters and their skills are presented together).
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,14 @@
|
|||||||
<p>Tabletop utility cockpit</p>
|
<p>Tabletop utility cockpit</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="header-group context">
|
<div class="header-group context">
|
||||||
<p><strong>@User!.DisplayName</strong> <span class="muted">(@User.Username)</span></p>
|
@if (User is null)
|
||||||
|
{
|
||||||
|
<p><strong>Loading user...</strong></p>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<p><strong>@User.DisplayName</strong> <span class="muted">(@User.Username)</span></p>
|
||||||
|
}
|
||||||
<p>Campaign: <strong>@(SelectedCampaignName ?? "No campaign selected")</strong></p>
|
<p>Campaign: <strong>@(SelectedCampaignName ?? "No campaign selected")</strong></p>
|
||||||
<p>Active: <strong>@(ActiveCharacterName ?? "None selected")</strong></p>
|
<p>Active: <strong>@(ActiveCharacterName ?? "None selected")</strong></p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user