From b8818cbce42cd7722c8dba1ba4465d24ae43843b Mon Sep 17 00:00:00 2001 From: Mikunj Date: Mon, 4 Nov 2019 08:44:19 +1100 Subject: [PATCH] Fix quotes in public group chats --- .../securesms/jobs/PushDecryptJob.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java index 332375246a..b42b07ce76 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java @@ -769,7 +769,10 @@ public class PushDecryptJob extends BaseJob implements InjectableType { Optional> sharedContacts = getContacts(message.getSharedContacts()); Optional> linkPreviews = getLinkPreviews(message.getPreviews(), message.getBody().or("")); Optional sticker = getStickerAttachment(message.getSticker()); - IncomingMediaMessage mediaMessage = new IncomingMediaMessage(primaryDeviceRecipient.getAddress(), message.getTimestamp(), -1, + + // If message is from group then we need to map it to the correct sender + Address sender = message.isGroupUpdate() ? Address.fromSerialized(content.getSender()) : primaryDeviceRecipient.getAddress(); + IncomingMediaMessage mediaMessage = new IncomingMediaMessage(sender, message.getTimestamp(), -1, message.getExpiresInSeconds() * 1000L, false, content.isNeedsReceipt(), message.getBody(), message.getGroupInfo(), message.getAttachments(), quote, sharedContacts, linkPreviews, sticker); @@ -933,7 +936,7 @@ public class PushDecryptJob extends BaseJob implements InjectableType { SmsDatabase database = DatabaseFactory.getSmsDatabase(context); String body = message.getBody().isPresent() ? message.getBody().get() : ""; Recipient originalRecipient = getMessageDestination(content, message); - Recipient primaryDeviceRecipient = message.isGroupUpdate() ? originalRecipient : getMessagePrimaryDestination(content, message); + Recipient primaryDeviceRecipient = getMessagePrimaryDestination(content, message); if (message.getExpiresInSeconds() != originalRecipient.getExpireMessages()) { handleExpirationUpdate(content, message, Optional.absent()); @@ -946,7 +949,9 @@ public class PushDecryptJob extends BaseJob implements InjectableType { } else { notifyTypingStoppedFromIncomingMessage(primaryDeviceRecipient, content.getSender(), content.getSenderDevice()); - IncomingTextMessage _textMessage = new IncomingTextMessage(primaryDeviceRecipient.getAddress(), + // If message is from group then we need to map it to the correct sender + Address sender = message.isGroupUpdate() ? Address.fromSerialized(content.getSender()) : primaryDeviceRecipient.getAddress(); + IncomingTextMessage _textMessage = new IncomingTextMessage(sender, content.getSenderDevice(), message.getTimestamp(), body, message.getGroupInfo(), @@ -1105,7 +1110,7 @@ public class PushDecryptJob extends BaseJob implements InjectableType { } private void updateFriendRequestStatusIfNeeded(@NonNull SignalServiceEnvelope envelope, @NonNull SignalServiceContent content, @NonNull SignalServiceDataMessage message) { - if (!envelope.isFriendRequest() || isGroupChatMessage(message)) { return; } + if (!envelope.isFriendRequest() || message.isGroupUpdate()) { return; } // This handles the case where another user sends us a regular message without authorisation boolean shouldBecomeFriends = PromiseUtil.get(MultiDeviceUtilities.shouldAutomaticallyBecomeFriendsWithDevice(content.getSender(), context), false); if (shouldBecomeFriends) { @@ -1611,11 +1616,7 @@ public class PushDecryptJob extends BaseJob implements InjectableType { } private boolean isGroupChatMessage(SignalServiceContent content) { - return content.getDataMessage().isPresent() && isGroupChatMessage(content.getDataMessage().get()); - } - - private boolean isGroupChatMessage(SignalServiceDataMessage message) { - return message.isGroupUpdate(); + return content.getDataMessage().isPresent() && content.getDataMessage().get().isGroupUpdate(); } private void resetRecipientToPush(@NonNull Recipient recipient) {