Files
Samuele Locatelli 9b6ea3c983 Continuo spostamenti
2026-03-27 10:32:10 +01:00

68 lines
1.8 KiB
Plaintext

@using GPW.CORE.Services
@inject NavigationManager Nav
@inject RouteModeService RouteModeSvc
<span class="page-mode-indicator" title="@Title">
@if (displayMode == RouteMode.ServerOnly)
{
<span class="text-danger" title="Server">🖥️</span>
}
else if (displayMode == RouteMode.ClientOnly)
{
@if (isBrowser)
{
<span class="text-success" title="WASM">🟢</span>
}
else
{
<span class="text-warning" title="Client (prerender)">🟡</span>
}
}
else
{
<span class="text-info" title="Hybrid">🔀</span>
}
</span>
@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();
}
}