From 7bede7e98ae3a5979e19f8255663c0ac55f4bd3b Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 18 Aug 2021 11:37:38 -0300 Subject: [PATCH] Fix issue where forwarded messages would show unlock icon. --- .../securesms/mms/OutgoingMediaMessage.java | 36 ++++++++++--------- .../mms/OutgoingSecureMediaMessage.java | 15 ++++++++ .../securesms/sharing/MultiShareSender.java | 17 +++++++-- .../securesms/sms/MessageSender.java | 4 +-- .../sms/OutgoingEncryptedMessage.java | 7 ++++ .../securesms/sms/OutgoingTextMessage.java | 6 ++-- 6 files changed, 62 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingMediaMessage.java b/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingMediaMessage.java index 0a70ff7e4..58b602f84 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingMediaMessage.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingMediaMessage.java @@ -78,23 +78,6 @@ public class OutgoingMediaMessage { contacts, linkPreviews, mentions, new LinkedList<>(), new LinkedList<>()); } - public OutgoingMediaMessage(OutgoingMediaMessage that, long expiresIn) { - this(that.getRecipient(), - that.body, - that.attachments, - that.sentTimeMillis, - that.subscriptionId, - expiresIn, - that.viewOnce, - that.distributionType, - that.outgoingQuote, - that.contacts, - that.linkPreviews, - that.mentions, - that.networkFailures, - that.identityKeyMismatches); - } - public OutgoingMediaMessage(OutgoingMediaMessage that) { this.recipient = that.getRecipient(); this.body = that.body; @@ -113,6 +96,25 @@ public class OutgoingMediaMessage { this.mentions.addAll(that.mentions); } + public @NonNull OutgoingMediaMessage withExpiry(long expiresIn) { + return new OutgoingMediaMessage( + getRecipient(), + body, + attachments, + sentTimeMillis, + subscriptionId, + expiresIn, + viewOnce, + distributionType, + outgoingQuote, + contacts, + linkPreviews, + mentions, + networkFailures, + identityKeyMismatches + ); + } + public Recipient getRecipient() { return recipient; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingSecureMediaMessage.java b/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingSecureMediaMessage.java index 4fd014cc1..9b1cec5d8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingSecureMediaMessage.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingSecureMediaMessage.java @@ -36,4 +36,19 @@ public class OutgoingSecureMediaMessage extends OutgoingMediaMessage { public boolean isSecure() { return true; } + + @Override + public @NonNull OutgoingMediaMessage withExpiry(long expiresIn) { + return new OutgoingSecureMediaMessage(getRecipient(), + getBody(), + getAttachments(), + getSentTimeMillis(), + getDistributionType(), + getExpiresIn(), + isViewOnce(), + getOutgoingQuote(), + getSharedContacts(), + getLinkPreviews(), + getMentions()); + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java index 8d9db23ad..7808167fd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java @@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.database.model.Mention; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.mediasend.Media; import org.thoughtcrime.securesms.mms.OutgoingMediaMessage; +import org.thoughtcrime.securesms.mms.OutgoingSecureMediaMessage; import org.thoughtcrime.securesms.mms.Slide; import org.thoughtcrime.securesms.mms.SlideDeck; import org.thoughtcrime.securesms.mms.SlideFactory; @@ -26,6 +27,7 @@ import org.thoughtcrime.securesms.mms.StickerSlide; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.sms.MessageSender; +import org.thoughtcrime.securesms.sms.OutgoingEncryptedMessage; import org.thoughtcrime.securesms.sms.OutgoingTextMessage; import org.thoughtcrime.securesms.util.MessageUtil; import org.thoughtcrime.securesms.util.Util; @@ -176,7 +178,12 @@ public final class MultiShareSender { : Collections.emptyList(), validatedMentions); - MessageSender.send(context, outgoingMediaMessage, threadId, forceSms, null); + if (recipient.isRegistered() && !forceSms) { + MessageSender.send(context, new OutgoingSecureMediaMessage(outgoingMediaMessage), threadId, false, null); + } else { + MessageSender.send(context, outgoingMediaMessage, threadId, forceSms, null); + } + } private static void sendTextMessage(@NonNull Context context, @@ -187,7 +194,13 @@ public final class MultiShareSender { long expiresIn, int subscriptionId) { - OutgoingTextMessage outgoingTextMessage = new OutgoingTextMessage(recipient, multiShareArgs.getDraftText(), expiresIn, subscriptionId); + + final OutgoingTextMessage outgoingTextMessage; + if (recipient.isRegistered() && !forceSms) { + outgoingTextMessage = new OutgoingEncryptedMessage(recipient, multiShareArgs.getDraftText(), expiresIn); + } else { + outgoingTextMessage = new OutgoingTextMessage(recipient, multiShareArgs.getDraftText(), expiresIn, subscriptionId); + } MessageSender.send(context, outgoingTextMessage, threadId, forceSms, null); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java b/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java index b42cf41d7..fed6d7302 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java @@ -379,14 +379,14 @@ public class MessageSender { private static @NonNull OutgoingTextMessage applyUniversalExpireTimerIfNecessary(@NonNull Context context, @NonNull Recipient recipient, @NonNull OutgoingTextMessage outgoingTextMessage, long threadId) { if (outgoingTextMessage.getExpiresIn() == 0 && RecipientUtil.setAndSendUniversalExpireTimerIfNecessary(context, recipient, threadId)) { - return new OutgoingTextMessage(outgoingTextMessage, TimeUnit.SECONDS.toMillis(SignalStore.settings().getUniversalExpireTimer())); + return outgoingTextMessage.withExpiry(TimeUnit.SECONDS.toMillis(SignalStore.settings().getUniversalExpireTimer())); } return outgoingTextMessage; } private static @NonNull OutgoingMediaMessage applyUniversalExpireTimerIfNecessary(@NonNull Context context, @NonNull Recipient recipient, @NonNull OutgoingMediaMessage outgoingMediaMessage, long threadId) { if (!outgoingMediaMessage.isExpirationUpdate() && outgoingMediaMessage.getExpiresIn() == 0 && RecipientUtil.setAndSendUniversalExpireTimerIfNecessary(context, recipient, threadId)) { - return new OutgoingMediaMessage(outgoingMediaMessage, TimeUnit.SECONDS.toMillis(SignalStore.settings().getUniversalExpireTimer())); + return outgoingMediaMessage.withExpiry(TimeUnit.SECONDS.toMillis(SignalStore.settings().getUniversalExpireTimer())); } return outgoingMediaMessage; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/sms/OutgoingEncryptedMessage.java b/app/src/main/java/org/thoughtcrime/securesms/sms/OutgoingEncryptedMessage.java index 9f2bfcb87..fd9c3cc55 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sms/OutgoingEncryptedMessage.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sms/OutgoingEncryptedMessage.java @@ -1,5 +1,7 @@ package org.thoughtcrime.securesms.sms; +import androidx.annotation.NonNull; + import org.thoughtcrime.securesms.recipients.Recipient; public class OutgoingEncryptedMessage extends OutgoingTextMessage { @@ -17,6 +19,11 @@ public class OutgoingEncryptedMessage extends OutgoingTextMessage { return true; } + @Override + public @NonNull OutgoingTextMessage withExpiry(long expiresIn) { + return new OutgoingEncryptedMessage(getRecipient(), getMessageBody(), expiresIn); + }; + @Override public OutgoingTextMessage withBody(String body) { return new OutgoingEncryptedMessage(this, body); diff --git a/app/src/main/java/org/thoughtcrime/securesms/sms/OutgoingTextMessage.java b/app/src/main/java/org/thoughtcrime/securesms/sms/OutgoingTextMessage.java index d22f12f65..dcdfb0238 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sms/OutgoingTextMessage.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sms/OutgoingTextMessage.java @@ -1,5 +1,7 @@ package org.thoughtcrime.securesms.sms; +import androidx.annotation.NonNull; + import org.thoughtcrime.securesms.database.model.SmsMessageRecord; import org.thoughtcrime.securesms.recipients.Recipient; @@ -28,8 +30,8 @@ public class OutgoingTextMessage { this.message = body; } - public OutgoingTextMessage(OutgoingTextMessage base, long expiresIn) { - this(base.getRecipient(), base.getMessageBody(), expiresIn, base.getSubscriptionId()); + public @NonNull OutgoingTextMessage withExpiry(long expiresIn) { + return new OutgoingTextMessage(recipient, message, expiresIn, subscriptionId); } public long getExpiresIn() {