From 82ff20404cd41a3d03e47f0067e0a46e54330a43 Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Wed, 20 May 2026 15:29:40 -0400 Subject: [PATCH] fix(postmerge): guard DeepDrftMenu SSR hang, add Manager root redirect, add Manager styles link --- DeepDrftManager/Components/App.razor | 1 + DeepDrftManager/Components/Pages/Index.razor | 12 ++++++++++++ DeepDrftPublic.Client/Layout/DeepDrftMenu.razor | 7 +++++++ 3 files changed, 20 insertions(+) create mode 100644 DeepDrftManager/Components/Pages/Index.razor diff --git a/DeepDrftManager/Components/App.razor b/DeepDrftManager/Components/App.razor index 846da47..845821d 100644 --- a/DeepDrftManager/Components/App.razor +++ b/DeepDrftManager/Components/App.razor @@ -8,6 +8,7 @@ + diff --git a/DeepDrftManager/Components/Pages/Index.razor b/DeepDrftManager/Components/Pages/Index.razor new file mode 100644 index 0000000..ed10f52 --- /dev/null +++ b/DeepDrftManager/Components/Pages/Index.razor @@ -0,0 +1,12 @@ +@page "/" +@rendermode InteractiveServer +@using AuthBlocksWeb.HierarchicalAuthorize +@attribute [HierarchicalRoleAuthorize("Admin")] +@inject NavigationManager NavigationManager + +@code { + protected override void OnInitialized() + { + NavigationManager.NavigateTo("/cms", replace: true); + } +} diff --git a/DeepDrftPublic.Client/Layout/DeepDrftMenu.razor b/DeepDrftPublic.Client/Layout/DeepDrftMenu.razor index eb575c5..4c7ce0c 100644 --- a/DeepDrftPublic.Client/Layout/DeepDrftMenu.razor +++ b/DeepDrftPublic.Client/Layout/DeepDrftMenu.razor @@ -79,6 +79,13 @@ protected override async Task OnInitializedAsync() { + // During SSR prerender the dark-mode state is already seeded by the server-side + // DarkModeService (via IHttpContextAccessor + DarkModeSettings + PersistentComponentState). + // Invoking the EventCallback here during prerender triggers a re-render cycle on the + // SSR renderer that never completes, hanging the page. Guard to interactive-only so + // the cookie sync only runs when the component is actually mounted in the browser. + if (!RendererInfo.IsInteractive) return; + IsDarkMode = DarkModeCookieService.GetDarkModeAsync(); await IsDarkModeChanged.InvokeAsync(IsDarkMode); }