@using MudBlazor @using DiunaBI.UI.Shared.Services @inject AppConfig AppConfig @inject EntityChangeHubService HubService @inject AuthService AuthService @inherits LayoutComponentBase @implements IDisposable @AppConfig.AppName Dashboard Layers Data Inbox Jobs @Body @code { private bool _drawerOpen = true; private DrawerVariant _drawerVariant = DrawerVariant.Persistent; protected override void OnInitialized() { // Subscribe to authentication state changes AuthService.AuthenticationStateChanged += OnAuthenticationStateChanged; // If already authenticated (e.g., from restored session), initialize SignalR if (AuthService.IsAuthenticated) { _ = HubService.InitializeAsync(); } } private async void OnAuthenticationStateChanged(bool isAuthenticated) { if (isAuthenticated) { Console.WriteLine("🔐 MainLayout: User authenticated, initializing SignalR..."); await HubService.InitializeAsync(); } } public void Dispose() { AuthService.AuthenticationStateChanged -= OnAuthenticationStateChanged; } private MudTheme _theme = new MudTheme() { PaletteLight = new PaletteLight() { Primary = "#e7163d", PrimaryDarken = "#c01234", PrimaryLighten = "#f04366", Secondary = "#424242", AppbarBackground = "#e7163d", } }; void ToggleDrawer() { Console.WriteLine($"ToogleDrawer clickkk {DateTime.Now}"); _drawerOpen = !_drawerOpen; } private void OnBreakpointChanged(Breakpoint breakpoint) { if (breakpoint < Breakpoint.Md) { _drawerVariant = DrawerVariant.Temporary; _drawerOpen = false; } else { _drawerVariant = DrawerVariant.Persistent; _drawerOpen = true; } StateHasChanged(); } }