fix(auto): always cancel group summary when dismissing a conversation

Reading notificationManager.activeNotifications immediately after
cancel() races with NotificationManagerService, so the count of
remaining children was unreliable and the summary could linger.
Drop it unconditionally — the next inbound message rebuilds it via
showGroupSummary().

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
James Rich 2026-04-17 09:25:13 -05:00
parent fb606db067
commit 9c75f5a3f4

View file

@ -509,17 +509,10 @@ class MeshServiceNotificationsImpl(
override fun cancelMessageNotification(contactKey: String) {
notificationManager.cancel(contactKey.hashCode())
// Refresh (or remove) the group summary so the notification shade / Auto HUN doesn't
// continue surfacing a stale summary after the last child is dismissed.
val remainingChildren =
notificationManager.activeNotifications.count { sbn ->
sbn.id != SUMMARY_ID && sbn.notification.group == GROUP_KEY_MESSAGES
}
if (remainingChildren == 0) {
notificationManager.cancel(SUMMARY_ID)
} else {
showGroupSummary()
}
// Always drop the group summary — reading notificationManager.activeNotifications right
// after cancel() races with NotificationManagerService, so we can't reliably count what's
// left. The next incoming message re-builds the summary via showGroupSummary().
notificationManager.cancel(SUMMARY_ID)
}
override fun cancelLowBatteryNotification(node: Node) = notificationManager.cancel(node.num)