From 142388d16b3d929ede5e0eeaca89561be5822d0c Mon Sep 17 00:00:00 2001 From: Matvei Plokhov Date: Tue, 14 Jul 2026 00:18:25 +0200 Subject: [PATCH] Fix blocked conversation playing notification --- .../datamodel/BugleNotifications.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/com/android/messaging/datamodel/BugleNotifications.java b/src/com/android/messaging/datamodel/BugleNotifications.java index 23c532fce..fb8634647 100644 --- a/src/com/android/messaging/datamodel/BugleNotifications.java +++ b/src/com/android/messaging/datamodel/BugleNotifications.java @@ -159,8 +159,7 @@ private static void createMessageNotification(final String conversationId) { final boolean softSound = DataModel.get().isNewMessageObservable(conversationId); if (state == null) { if (softSound && !TextUtils.isEmpty(conversationId)) { - final Uri ringtoneUri = getNotificationRingtoneUriForConversationId(conversationId); - playObservableConversationNotificationSound(ringtoneUri); + playObservableSoundUnlessBlocked(conversationId); } return; } @@ -217,12 +216,28 @@ private static boolean isConversationSnoozed(final String conversationId) { return repository.isSnoozed(conversationId); } - private static Uri getNotificationRingtoneUriForConversationId(final String conversationId) { + private static void playObservableSoundUnlessBlocked(final String conversationId) { final DatabaseWrapper db = DataModel.get().getDatabase(); final ConversationListItemData convData = ConversationListItemData.getExistingConversation(db, conversationId); - return RingtoneUtil.getNotificationRingtoneUri(conversationId, + + // Blocked conversations never notify, so don't chime for them either. + if (convData != null && isConversationBlocked(db, convData)) { + return; + } + + final Uri ringtoneUri = RingtoneUtil.getNotificationRingtoneUri(conversationId, convData != null ? convData.getNotificationSoundUri() : null); + playObservableConversationNotificationSound(ringtoneUri); + } + + private static boolean isConversationBlocked( + final DatabaseWrapper db, + final ConversationListItemData convData + ) { + final String otherDestination = convData.getOtherParticipantNormalizedDestination(); + return otherDestination != null + && BugleDatabaseOperations.isBlockedDestination(db, otherDestination); } /**