From 72b94127fb65c587901d0c60914dc04538b3ef3d Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 18 Aug 2020 14:15:55 -0400 Subject: [PATCH] Stop muted threads from triggering full notification updates. --- .../notifications/DefaultMessageNotifier.java | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java index 8ee1b46ea..3128a0a8d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java @@ -34,6 +34,7 @@ import android.text.SpannableStringBuilder; import android.text.TextUtils; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationManagerCompat; @@ -245,19 +246,31 @@ public class DefaultMessageNotifier implements MessageNotifier { long threadId, boolean signal) { - boolean isVisible = visibleThread == threadId; + boolean isVisible = visibleThread == threadId; + Recipient recipient = DatabaseFactory.getThreadDatabase(context).getRecipientForThreadId(threadId); - ThreadDatabase threads = DatabaseFactory.getThreadDatabase(context); + if (shouldNotify(context, recipient, threadId)) { + if (isVisible) { + sendInThreadNotification(context, recipient); + } else { + updateNotification(context, threadId, signal, 0); + } + } + } + private boolean shouldNotify(@NonNull Context context, @Nullable Recipient recipient, long threadId) { if (!TextSecurePreferences.isNotificationsEnabled(context)) { - return; + return false; } - if (isVisible) { - sendInThreadNotification(context, threads.getRecipientForThreadId(threadId)); - } else { - updateNotification(context, threadId, signal, 0); + if (recipient == null || !recipient.isMuted()) { + return true; } + + return FeatureFlags.mentions() && + recipient.isPushV2Group() && + recipient.getMentionSetting() == RecipientDatabase.MentionSetting.ALWAYS_NOTIFY && + DatabaseFactory.getMmsDatabase(context).getUnreadMentionCount(threadId) > 0; } @Override