@inherits LayoutComponentBase @inject AuthenticationStateProvider AuthStateProvider @inject NavigationManager Nav @inject IUserNotificationService UserNotificationService @implements IDisposable @using System.Security.Claims Timetracker @Body @code { private bool _drawerOpen = true; protected override void OnInitialized() { UserNotificationService.OnUserDeleted += HandleUserDeleted; } private async Task HandleUserDeleted(int deletedUserId) { var state = await AuthStateProvider.GetAuthenticationStateAsync(); var idClaim = state.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; if (idClaim != null && int.TryParse(idClaim, out var myId) && myId == deletedUserId) { await InvokeAsync(() => Nav.NavigateTo("/auth/logout", forceLoad: true)); } } public void Dispose() { UserNotificationService.OnUserDeleted -= HandleUserDeleted; } private readonly MudTheme _theme = new() { PaletteLight = new PaletteLight { Primary = "#1E293B", PrimaryDarken = "#0F172A", PrimaryLighten = "#475569", Secondary = "#0EA5E9", SecondaryDarken = "#0284C7", AppbarBackground = "#0F172A", Background = "#F8FAFC", DrawerBackground = "#FFFFFF", Surface = "#FFFFFF", TextPrimary = "#0F172A", TextSecondary = "#475569", } }; private void ToggleDrawer() => _drawerOpen = !_drawerOpen; }