@using JSMR.UI.Blazor.Components @using JSMR.UI.Blazor.Services @inject SessionState Session @inject NavigationManager Navigation @inherits LayoutComponentBase JSMR @* *@ @if (Session.IsAuthenticated) { @* Logged in as @Session.Me?.Name (@Session.Me?.Role) *@ @Session.Me?.Name @* (@Session.Me?.Role) *@ Logout } else { Login } Home Voice Works Circles Tags Creators Scanner Analytics @Body @* Required *@ @* Needed for dialogs *@ @* Needed for snackbars *@ @code{ private bool _open = false; private bool _dense = true; private Breakpoint _breakpoint = Breakpoint.Lg; private DrawerClipMode _clipMode = DrawerClipMode.Always; private void ToggleDrawer() { _open = !_open; } private bool _isDarkMode; private MudThemeProvider _mudThemeProvider; protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { _isDarkMode = await _mudThemeProvider.GetSystemDarkModeAsync(); StateHasChanged(); } } protected override void OnInitialized() { Session.Changed += OnSessionChanged; } private void OnSessionChanged() => InvokeAsync(StateHasChanged); private async Task OnLogout(MouseEventArgs _) { await Session.LogoutAsync(); } public void Dispose() { Session.Changed -= OnSessionChanged; } private async Task LogoutAsync() { await Session.LogoutAsync(); Navigation.NavigateTo("/login"); } }