From 200ed3f2b5717eaca3e7e4ee5bf519e77d461bf9 Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Thu, 19 Feb 2026 23:00:08 -0500 Subject: [PATCH] Fix sidebar alert badge not clearing on acknowledge (fixes #186) AcknowledgeServerAlerts_Click only updated AlertStateService (tab badges) but never hid alerts in EmailAlertService, so the sidebar Alerts button badge count stayed unchanged. Now also hides alerts for the acknowledged server and refreshes the badge. Alert History dismiss actions also immediately update the sidebar badge via an AlertsDismissed event. Co-Authored-By: Claude Opus 4.6 --- Dashboard/Controls/AlertsHistoryContent.xaml.cs | 4 ++++ Dashboard/MainWindow.xaml.cs | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/Dashboard/Controls/AlertsHistoryContent.xaml.cs b/Dashboard/Controls/AlertsHistoryContent.xaml.cs index 9741b2aa..132cb1d8 100644 --- a/Dashboard/Controls/AlertsHistoryContent.xaml.cs +++ b/Dashboard/Controls/AlertsHistoryContent.xaml.cs @@ -23,6 +23,8 @@ namespace PerformanceMonitorDashboard.Controls { public partial class AlertsHistoryContent : UserControl { + public event EventHandler? AlertsDismissed; + private List _allAlerts = new(); /* Column filter state */ @@ -219,6 +221,7 @@ private void DismissSelected_Click(object sender, RoutedEventArgs e) service.HideAlerts(keys); LoadAlerts(); + AlertsDismissed?.Invoke(this, EventArgs.Empty); } private void DismissAll_Click(object sender, RoutedEventArgs e) @@ -247,6 +250,7 @@ private void DismissAll_Click(object sender, RoutedEventArgs e) service.HideAllAlerts(hoursBack > 0 ? hoursBack : 8760, serverName); LoadAlerts(); + AlertsDismissed?.Invoke(this, EventArgs.Empty); } #endregion diff --git a/Dashboard/MainWindow.xaml.cs b/Dashboard/MainWindow.xaml.cs index 9b8d6488..fb49ecc0 100644 --- a/Dashboard/MainWindow.xaml.cs +++ b/Dashboard/MainWindow.xaml.cs @@ -606,6 +606,7 @@ private void OpenAlertsTab() } _alertsHistoryContent = new AlertsHistoryContent(); + _alertsHistoryContent.AlertsDismissed += (_, _) => UpdateAlertBadge(); var headerPanel = new StackPanel { Orientation = Orientation.Horizontal }; var headerText = new TextBlock @@ -1568,6 +1569,15 @@ private void AcknowledgeServerAlerts_Click(object sender, RoutedEventArgs e) { serverTab.UpdateBadges(null, _alertStateService); } + + // Hide alerts in the email alert log so the sidebar badge updates + var server = _serverManager.GetAllServers().FirstOrDefault(s => s.Id == serverId); + if (server != null) + { + _emailAlertService.HideAllAlerts(8760, server.DisplayName); + UpdateAlertBadge(); + _alertsHistoryContent?.RefreshAlerts(); + } } }