68 lines
1.8 KiB
Plaintext
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();
|
|
}
|
|
}
|