Stop muted threads from triggering full notification updates.

This commit is contained in:
Cody Henthorne 2020-08-18 14:15:55 -04:00 committed by GitHub
parent 1f1fc94d22
commit 72b94127fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -34,6 +34,7 @@ import android.text.SpannableStringBuilder;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat; import androidx.core.app.NotificationManagerCompat;
@ -246,19 +247,31 @@ public class DefaultMessageNotifier implements MessageNotifier {
boolean signal) 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 (!TextSecurePreferences.isNotificationsEnabled(context)) {
return;
}
if (isVisible) { if (isVisible) {
sendInThreadNotification(context, threads.getRecipientForThreadId(threadId)); sendInThreadNotification(context, recipient);
} else { } else {
updateNotification(context, threadId, signal, 0); updateNotification(context, threadId, signal, 0);
} }
} }
}
private boolean shouldNotify(@NonNull Context context, @Nullable Recipient recipient, long threadId) {
if (!TextSecurePreferences.isNotificationsEnabled(context)) {
return false;
}
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 @Override
public void updateNotification(@NonNull Context context, public void updateNotification(@NonNull Context context,