Fix issue where forwarded messages would show unlock icon.

This commit is contained in:
Alex Hart 2021-08-18 11:37:38 -03:00 committed by Greyson Parrelli
parent fec4a7692d
commit 7bede7e98a
6 changed files with 62 additions and 23 deletions

View file

@ -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;
}

View file

@ -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());
}
}

View file

@ -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);
}

View file

@ -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;
}

View file

@ -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);

View file

@ -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() {