mirror of
https://github.com/lantean-code/qbtmud.git
synced 2025-10-23 04:52:22 +00:00
Add project files.
This commit is contained in:
89
Lantean.QBTMudBlade/Layout/MainLayout.razor.cs
Normal file
89
Lantean.QBTMudBlade/Layout/MainLayout.razor.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using Lantean.QBitTorrentClient;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using MudBlazor;
|
||||
using MudBlazor.Services;
|
||||
|
||||
namespace Lantean.QBTMudBlade.Layout
|
||||
{
|
||||
public partial class MainLayout : IBrowserViewportObserver, IAsyncDisposable
|
||||
{
|
||||
private bool _disposedValue;
|
||||
|
||||
[Inject]
|
||||
protected NavigationManager NavigationManager { get; set; } = default!;
|
||||
|
||||
[Inject]
|
||||
private IBrowserViewportService BrowserViewportService { get; set; } = default!;
|
||||
|
||||
[Inject]
|
||||
private IApiClient ApiClient { get; set; } = default!;
|
||||
|
||||
protected bool DrawerOpen { get; set; } = true;
|
||||
|
||||
protected bool ShowMenu { get; set; } = false;
|
||||
|
||||
public Guid Id => Guid.NewGuid();
|
||||
|
||||
ResizeOptions IBrowserViewportObserver.ResizeOptions { get; } = new()
|
||||
{
|
||||
ReportRate = 50,
|
||||
NotifyOnBreakpointOnly = true
|
||||
};
|
||||
|
||||
protected void ToggleDrawer()
|
||||
{
|
||||
DrawerOpen = !DrawerOpen;
|
||||
}
|
||||
|
||||
protected override async Task OnParametersSetAsync()
|
||||
{
|
||||
if (!ShowMenu)
|
||||
{
|
||||
ShowMenu = await ApiClient.CheckAuthState();
|
||||
}
|
||||
}
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
await BrowserViewportService.SubscribeAsync(this, fireImmediately: true);
|
||||
}
|
||||
|
||||
await base.OnAfterRenderAsync(firstRender);
|
||||
}
|
||||
|
||||
public async Task NotifyBrowserViewportChangeAsync(BrowserViewportEventArgs browserViewportEventArgs)
|
||||
{
|
||||
if (browserViewportEventArgs.Breakpoint == Breakpoint.Sm && DrawerOpen)
|
||||
{
|
||||
DrawerOpen = false;
|
||||
}
|
||||
else if (browserViewportEventArgs.Breakpoint > Breakpoint.Sm && !DrawerOpen)
|
||||
{
|
||||
DrawerOpen = true;
|
||||
}
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
protected virtual async Task DisposeAsync(bool disposing)
|
||||
{
|
||||
if (!_disposedValue)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
await BrowserViewportService.UnsubscribeAsync(this);
|
||||
}
|
||||
|
||||
_disposedValue = true;
|
||||
}
|
||||
}
|
||||
|
||||
public async ValueTask DisposeAsync()
|
||||
{
|
||||
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
|
||||
await DisposeAsync(disposing: true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user