Skip to content

Commit

Permalink
Switch to auto render.
Browse files Browse the repository at this point in the history
  • Loading branch information
bitbound committed Oct 12, 2024
1 parent ac3ec69 commit 451dc86
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 63 deletions.
81 changes: 28 additions & 53 deletions ControlR.Web.Client/Components/Layout/MainLayout.razor
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
@inherits LayoutComponentBase
@inject AuthenticationStateProvider AuthState
@inject ILazyDi<IMessenger> Messenger
@inject ILazyDi<IBusyCounter> BusyCounter
@inject ILazyDi<IViewerHubConnection> ViewerHub
@inject ILazyDi<ISnackbar> Snackbar
@inject ILazyDi<NavigationManager> NavManager
@inject ILazyDi<ILogger<MainLayout>> Logger
@inject IMessenger Messenger
@inject IBusyCounter BusyCounter
@inject IViewerHubConnection ViewerHub
@inject ISnackbar Snackbar
@inject NavigationManager NavManager
@inject ILogger<MainLayout> Logger

<div>
<MudThemeProvider IsDarkMode Theme="CustomTheme" />
Expand Down Expand Up @@ -74,30 +74,18 @@
</MudTooltip>
</MudAppBar>
<MudDrawer @bind-Open="_drawerOpen" ClipMode="DrawerClipMode.Always" Elevation="2">
<NavMenu IsDisabled="@_isWaitingForWasmLoad" />
<NavMenu />
</MudDrawer>
<MudMainContent Class="mt-16 pa-4">
@if (_isWaitingForWasmLoad)
{
<div class="w-100 text-center mt-8">
<MudText Typo="Typo.h4" Color="Color.Info" GutterBottom>
Loading
</MudText>
<MudProgressCircular Min="0" Max="1" Indeterminate Color="Color.Info" Size="Size.Large" />
</div>
}
else
{
<div>
@if (_showAlert)
{
<MudAlert Severity="_alertSeverity.ToMudSeverity()" ShowCloseIcon="true" CloseIconClicked="CloseAlert">
@(_alertMessage)
</MudAlert>
}
</div>
@Body
}
<div>
@if (_showAlert)
{
<MudAlert Severity="_alertSeverity.ToMudSeverity()" ShowCloseIcon="true" CloseIconClicked="CloseAlert">
@(_alertMessage)
</MudAlert>
}
</div>
@Body
</MudMainContent>
</MudLayout>

Expand All @@ -116,7 +104,6 @@
private bool _isAuthenticated;
private bool _isBrowser;
private bool _isBusy;
private bool _isWaitingForWasmLoad = true;
private bool _showAlert;
private HubConnectionState _hubConnectionState = HubConnectionState.Disconnected;
private AlertSeverity _alertSeverity = AlertSeverity.Information;
Expand Down Expand Up @@ -153,39 +140,27 @@
_isBrowser = OperatingSystem.IsBrowser();
_isAuthenticated = await AuthState.IsAuthenticated();

_isWaitingForWasmLoad =
!_isBrowser &&
Uri.TryCreate(NavManager.Value.Uri, UriKind.Absolute, out var currentUri) &&
!currentUri.PathAndQuery.StartsWith("/Account");

if (_isBrowser)
{
Messenger.Value.RegisterGenericMessage(this, HandleGeneric);
Messenger.Value.Register<ToastMessage>(this, HandleToastMessage);
Messenger.Value.Register<DtoReceivedMessage<AlertBroadcastDto>>(this, HandleAlertBroadcastReceived);
Messenger.Value.Register<HubConnectionStateChangedMessage>(this, HandleHubConnectionStateChanged);
Messenger.RegisterGenericMessage(this, HandleGeneric);
Messenger.Register<ToastMessage>(this, HandleToastMessage);
Messenger.Register<DtoReceivedMessage<AlertBroadcastDto>>(this, HandleAlertBroadcastReceived);
Messenger.Register<HubConnectionStateChangedMessage>(this, HandleHubConnectionStateChanged);

AuthState.AuthenticationStateChanged += HandleAuthenticationStateChanged;

if (_isAuthenticated)
{
await ViewerHub.Value.Connect();
await ViewerHub.Connect();
}
}
}

protected override bool ShouldRender()
{
if (BusyCounter.Exists)
{
_isBusy = BusyCounter.Value.IsBusy;
_pendingOperations = BusyCounter.Value.PendingOperations;
}

if (ViewerHub.Exists)
{
_hubConnectionState = ViewerHub.Value.ConnectionState;
}
_isBusy = BusyCounter.IsBusy;
_pendingOperations = BusyCounter.PendingOperations;
_hubConnectionState = ViewerHub.ConnectionState;

return base.ShouldRender();
}
Expand Down Expand Up @@ -218,13 +193,13 @@

if (_isAuthenticated)
{
await ViewerHub.Value.Connect();
await ViewerHub.Connect();
}
}
catch (Exception ex)
{
Logger.Value.LogError(ex, "Error while handling authentication state change.");
Snackbar.Value.Add("Authentication state change error", Severity.Error);
Logger.LogError(ex, "Error while handling authentication state change.");
Snackbar.Add("Authentication state change error", Severity.Error);
}
}

Expand All @@ -248,7 +223,7 @@

private Task HandleToastMessage(object subscriber, ToastMessage toast)
{
Snackbar.Maybe?.Add(toast.Message, toast.Severity);
Snackbar.Add(toast.Message, toast.Severity);
return Task.CompletedTask;
}

Expand Down
15 changes: 6 additions & 9 deletions ControlR.Web.Client/Components/Layout/NavMenu.razor
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
<MudNavLink Href="" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Home">
Home
</MudNavLink>
<MudNavLink Disabled="IsDisabled || !_isAuthenticated" Href="@(RouteNames.Deploy)" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.RocketLaunch">
<MudNavLink Disabled="!_isAuthenticated" Href="@(RouteNames.Deploy)" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.RocketLaunch">
Deploy
</MudNavLink>
<MudNavLink Disabled="IsDisabled || !_isAuthenticated" Href="@(RouteNames.Settings)" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Settings">
<MudNavLink Disabled="!_isAuthenticated" Href="@(RouteNames.Settings)" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Settings">
Settings
</MudNavLink>

Expand All @@ -26,7 +26,7 @@
Admin Area
</MudText>
</div>
<MudNavLink Disabled="IsDisabled" Href="@(RouteNames.ServerAdmin)" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.AdminPanelSettings">
<MudNavLink Href="@(RouteNames.ServerAdmin)" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.AdminPanelSettings">
Server Admin
</MudNavLink>
</Authorized>
Expand All @@ -36,7 +36,7 @@

<AuthorizeView>
<Authorized>
<MudNavLink Disabled="@IsDisabled" Href="Account/Manage" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Person">
<MudNavLink Href="Account/Manage" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Person">
Account
</MudNavLink>
<form action="Account/Logout" method="post">
Expand All @@ -48,10 +48,10 @@
</form>
</Authorized>
<NotAuthorized>
<MudNavLink Disabled="@IsDisabled" Href="Account/Register" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Person">
<MudNavLink Href="Account/Register" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Person">
Register
</MudNavLink>
<MudNavLink Disabled="@IsDisabled" Href="Account/Login" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Password">
<MudNavLink Href="Account/Login" Match="NavLinkMatch.Prefix" Icon="@Icons.Material.Filled.Password">
Login
</MudNavLink>
</NotAuthorized>
Expand All @@ -64,9 +64,6 @@
private string? _currentUrl;
private bool _isAuthenticated;

[Parameter]
public bool IsDisabled { get; set; }


public void Dispose()
{
Expand Down
2 changes: 1 addition & 1 deletion ControlR.Web.Server/Components/App.razor
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,5 @@

private IComponentRenderMode? RenderModeForPage => HttpContext.Request.Path.StartsWithSegments("/Account")
? null
: InteractiveWebAssembly;
: InteractiveAuto;
}
2 changes: 2 additions & 0 deletions ControlR.Web.Server/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
// Add components.
builder.Services
.AddRazorComponents()
.AddInteractiveServerComponents()
.AddInteractiveWebAssemblyComponents();

// Add API services.
Expand Down Expand Up @@ -197,6 +198,7 @@

app.MapRazorComponents<App>()
.AddInteractiveWebAssemblyRenderMode()
.AddInteractiveServerRenderMode()
.AddAdditionalAssemblies(typeof(_Imports).Assembly);

app.MapAdditionalIdentityEndpoints();
Expand Down

0 comments on commit 451dc86

Please sign in to comment.