diff --git a/samples/core/dymaptic.GeoBlazor.Core.Sample.Shared/Shared/LayoutService.cs b/samples/core/dymaptic.GeoBlazor.Core.Sample.Shared/Shared/LayoutService.cs index 9bf823e..371c883 100644 --- a/samples/core/dymaptic.GeoBlazor.Core.Sample.Shared/Shared/LayoutService.cs +++ b/samples/core/dymaptic.GeoBlazor.Core.Sample.Shared/Shared/LayoutService.cs @@ -1,21 +1,22 @@ namespace dymaptic.GeoBlazor.Core.Sample.Shared.Shared; -// LayoutStateService.cs public class LayoutService { public SamplePage? CurrentPage { get; private set; } + + // URI the CurrentPage was registered for. Consumers should only treat + // CurrentPage as live when this matches the layout's current URI — + // that way stale references from a previously-rendered SamplePage are + // silently ignored after navigation, with no race against component + // initialization order. + public string? PageUri { get; private set; } + public event Action? OnPageChanged; - public void SetCurrentPage(SamplePage page) + public void SetCurrentPage(SamplePage page, string uri) { CurrentPage = page; - OnPageChanged?.Invoke(); - } - - public void ClearCurrentPage() - { - if (CurrentPage is null) return; - CurrentPage = null; + PageUri = uri; OnPageChanged?.Invoke(); } } \ No newline at end of file diff --git a/samples/core/dymaptic.GeoBlazor.Core.Sample.Shared/Shared/MainLayout.razor b/samples/core/dymaptic.GeoBlazor.Core.Sample.Shared/Shared/MainLayout.razor index 5fe5762..c6558b3 100644 --- a/samples/core/dymaptic.GeoBlazor.Core.Sample.Shared/Shared/MainLayout.razor +++ b/samples/core/dymaptic.GeoBlazor.Core.Sample.Shared/Shared/MainLayout.razor @@ -23,13 +23,13 @@