@using Microsoft.AspNetCore.Components.Authorization @using MoonCore.Blazor.Tailwind.Auth @using Moonlight.Client.UI.Layouts @inject ToastService ToastService @inject NavigationManager Navigation @inject AuthenticationStateManager AuthStateManager
@if (Layout.ShowMobileNavigation) { } else { }
@code { [Parameter] public MainLayout Layout { get; set; } [CascadingParameter] public Task AuthState { get; set; } private bool ShowProfileNav = false; private string Username; protected override async Task OnInitializedAsync() { var identity = await AuthState; var usernameClaim = identity.User.Claims.ToArray().First(x => x.Type == "username"); Username = usernameClaim.Value; } protected override Task OnAfterRenderAsync(bool firstRender) { if(!firstRender) return Task.CompletedTask; Layout.OnStateChanged += () => InvokeAsync(StateHasChanged); return Task.CompletedTask; } private async Task ToggleProfileNav() { ShowProfileNav = !ShowProfileNav; await InvokeAsync(StateHasChanged); } private Task ProfileNav_OnFocusOut() { Task.Run(async () => { await Task.Delay(200); ShowProfileNav = false; await InvokeAsync(StateHasChanged); }); return Task.CompletedTask; } private async Task Logout() => await AuthStateManager.Logout(); }