From fb606db06733d0ea0ae29d2874e2fd124e4e0730 Mon Sep 17 00:00:00 2001 From: James Rich Date: Fri, 17 Apr 2026 09:21:37 -0500 Subject: [PATCH] fix(auto): refresh group summary when a conversation is cancelled After clearing a message notification we left the GROUP_KEY_MESSAGES summary in place, which on Android Auto leaves a lingering HUN / summary entry for the already-dismissed conversation. Cancel the summary when no child notifications remain, and refresh it otherwise. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../core/service/MeshServiceNotificationsImpl.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshServiceNotificationsImpl.kt b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshServiceNotificationsImpl.kt index 6d02f83be..091d45ad2 100644 --- a/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshServiceNotificationsImpl.kt +++ b/core/service/src/androidMain/kotlin/org/meshtastic/core/service/MeshServiceNotificationsImpl.kt @@ -507,7 +507,20 @@ class MeshServiceNotificationsImpl( notificationManager.notify(clientNotification.toString().hashCode(), notification) } - override fun cancelMessageNotification(contactKey: String) = notificationManager.cancel(contactKey.hashCode()) + 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() + } + } override fun cancelLowBatteryNotification(node: Node) = notificationManager.cancel(node.num)