Do not allow replying on reactions and messages without visible content.

master
Alan Evans 2020-09-23 13:00:25 -03:00 committed by Greyson Parrelli
parent b1fdbc0151
commit 5ae96905bb
3 changed files with 19 additions and 4 deletions

View File

@ -383,7 +383,7 @@ public class DefaultMessageNotifier implements MessageNotifier {
notificationState.getQuickReplyIntent(context, notifications.get(0).getRecipient()),
notificationState.getRemoteReplyIntent(context, notifications.get(0).getRecipient(), replyMethod),
replyMethod,
!isSingleNotificationContactJoined);
!isSingleNotificationContactJoined && notificationState.canReply());
builder.addAndroidAutoAction(notificationState.getAndroidAutoReplyIntent(context, notifications.get(0).getRecipient()),
notificationState.getAndroidAutoHeardIntent(context, notificationId), notifications.get(0).getTimestamp());
@ -533,6 +533,8 @@ public class DefaultMessageNotifier implements MessageNotifier {
}
if (isUnreadMessage) {
boolean canReply = false;
if (KeyCachingService.isLocked(context)) {
body = SpanUtil.italic(context.getString(R.string.MessageNotifier_locked_message));
} else if (record.isMms() && !((MmsMessageRecord) record).getSharedContacts().isEmpty()) {
@ -545,6 +547,9 @@ public class DefaultMessageNotifier implements MessageNotifier {
} else if (record.isMms() && !record.isMmsNotification() && !((MmsMessageRecord) record).getSlideDeck().getSlides().isEmpty()) {
body = ThreadBodyUtil.getFormattedBodyFor(context, record);
slideDeck = ((MmsMessageRecord) record).getSlideDeck();
canReply = true;
} else {
canReply = true;
}
boolean includeMessage = true;
@ -555,7 +560,7 @@ public class DefaultMessageNotifier implements MessageNotifier {
}
if (threadRecipients == null || includeMessage) {
notificationState.addNotification(new NotificationItem(id, mms, recipient, conversationRecipient, threadRecipients, threadId, body, timestamp, receivedTimestamp, slideDeck, false, record.isJoined()));
notificationState.addNotification(new NotificationItem(id, mms, recipient, conversationRecipient, threadRecipients, threadId, body, timestamp, receivedTimestamp, slideDeck, false, record.isJoined(), canReply));
}
}
@ -590,7 +595,7 @@ public class DefaultMessageNotifier implements MessageNotifier {
}
if (threadRecipients == null || !threadRecipients.isMuted()) {
notificationState.addNotification(new NotificationItem(id, mms, reactionSender, conversationRecipient, threadRecipients, threadId, body, reaction.getDateReceived(), receivedTimestamp, null, true, record.isJoined()));
notificationState.addNotification(new NotificationItem(id, mms, reactionSender, conversationRecipient, threadRecipients, threadId, body, reaction.getDateReceived(), receivedTimestamp, null, true, record.isJoined(), false));
}
}
}

View File

@ -28,6 +28,7 @@ public class NotificationItem {
@Nullable private final SlideDeck slideDeck;
private final boolean jumpToMessage;
private final boolean isJoin;
private final boolean canReply;
public NotificationItem(long id,
boolean mms,
@ -40,7 +41,8 @@ public class NotificationItem {
long messageReceivedTimestamp,
@Nullable SlideDeck slideDeck,
boolean jumpToMessage,
boolean isJoin)
boolean isJoin,
boolean canReply)
{
this.id = id;
this.mms = mms;
@ -54,6 +56,7 @@ public class NotificationItem {
this.slideDeck = slideDeck;
this.jumpToMessage = jumpToMessage;
this.isJoin = isJoin;
this.canReply = canReply;
}
public @NonNull Recipient getRecipient() {
@ -112,4 +115,8 @@ public class NotificationItem {
private static void makeIntentUniqueToPreventMerging(@NonNull Intent intent) {
intent.setData((Uri.parse("custom://"+System.currentTimeMillis())));
}
public boolean canReply() {
return canReply;
}
}

View File

@ -208,5 +208,8 @@ public class NotificationState {
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
public boolean canReply() {
return notifications.size() == 1 && notifications.get(0).canReply();
}
}