@using GPW.CORE.Services @inject NavigationManager Nav @inject RouteModeService RouteModeSvc @if (displayMode == RouteMode.ServerOnly) { 🖥️ } else if (displayMode == RouteMode.ClientOnly) { @if (isBrowser) { 🟢 } else { 🟡 } } else { 🔀 } @code { private RouteMode displayMode = RouteMode.Hybrid; private bool isBrowser; private string? Title; private IDisposable? _subscription; protected override void OnInitialized() { isBrowser = OperatingSystem.IsBrowser(); _subscription = RouteModeSvc.Subscribe(() => InvokeAsync(() => { UpdateForCurrentUri(); StateHasChanged(); })); UpdateForCurrentUri(); } protected override Task OnAfterRenderAsync(bool firstRender) { isBrowser = OperatingSystem.IsBrowser(); return base.OnAfterRenderAsync(firstRender); } private void UpdateForCurrentUri() { var uri = Nav.ToBaseRelativePath(Nav.Uri).Split('?')[0].Trim().TrimStart('/').ToLowerInvariant(); var mode = RouteModeSvc.GetModeFor(uri); displayMode = mode ?? RouteMode.Hybrid; Title = displayMode switch { RouteMode.ServerOnly => "Pagina Server Only", RouteMode.ClientOnly => "Pagina Client Only", _ => "Pagina Hybrid" }; } public void Dispose() { _subscription?.Dispose(); } }