Fix issue where all forwarded MMS media would try to send as a secure message.

fork-5.53.8
Alex Hart 2022-04-04 12:49:44 -03:00 zatwierdzone przez Cody Henthorne
rodzic 4c462bd75a
commit 5612a5d9e4
1 zmienionych plików z 11 dodań i 4 usunięć

Wyświetl plik

@ -11,6 +11,7 @@ import androidx.core.util.Consumer;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import org.signal.core.util.ThreadUtil; import org.signal.core.util.ThreadUtil;
import org.signal.core.util.concurrent.SimpleTask;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.TransportOption; import org.thoughtcrime.securesms.TransportOption;
import org.thoughtcrime.securesms.TransportOptions; import org.thoughtcrime.securesms.TransportOptions;
@ -33,7 +34,6 @@ import org.thoughtcrime.securesms.sms.OutgoingEncryptedMessage;
import org.thoughtcrime.securesms.sms.OutgoingTextMessage; import org.thoughtcrime.securesms.sms.OutgoingTextMessage;
import org.thoughtcrime.securesms.util.MessageUtil; import org.thoughtcrime.securesms.util.MessageUtil;
import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.Util;
import org.signal.core.util.concurrent.SimpleTask;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -252,13 +252,14 @@ public final class MultiShareSender {
outgoingMessages.add(outgoingMediaMessage); outgoingMessages.add(outgoingMediaMessage);
} }
if (recipient.isRegistered() && !forceSms) { if (shouldSendAsPush(recipient, forceSms))
{
for (final OutgoingMediaMessage outgoingMessage : outgoingMessages) { for (final OutgoingMediaMessage outgoingMessage : outgoingMessages) {
MessageSender.send(context, new OutgoingSecureMediaMessage(outgoingMessage), threadId, false, null, null); MessageSender.send(context, new OutgoingSecureMediaMessage(outgoingMessage), threadId, false, null, null);
} }
} else { } else {
for (final OutgoingMediaMessage outgoingMessage : outgoingMessages) { for (final OutgoingMediaMessage outgoingMessage : outgoingMessages) {
MessageSender.send(context, new OutgoingSecureMediaMessage(outgoingMessage), threadId, forceSms, null, null); MessageSender.send(context, outgoingMessage, threadId, forceSms, null, null);
} }
} }
} }
@ -273,7 +274,7 @@ public final class MultiShareSender {
{ {
final OutgoingTextMessage outgoingTextMessage; final OutgoingTextMessage outgoingTextMessage;
if (recipient.isRegistered() && !forceSms) { if (shouldSendAsPush(recipient, forceSms)) {
outgoingTextMessage = new OutgoingEncryptedMessage(recipient, multiShareArgs.getDraftText(), expiresIn); outgoingTextMessage = new OutgoingEncryptedMessage(recipient, multiShareArgs.getDraftText(), expiresIn);
} else { } else {
outgoingTextMessage = new OutgoingTextMessage(recipient, multiShareArgs.getDraftText(), expiresIn, subscriptionId); outgoingTextMessage = new OutgoingTextMessage(recipient, multiShareArgs.getDraftText(), expiresIn, subscriptionId);
@ -282,6 +283,12 @@ public final class MultiShareSender {
MessageSender.send(context, outgoingTextMessage, threadId, forceSms, null, null); MessageSender.send(context, outgoingTextMessage, threadId, forceSms, null, null);
} }
private static boolean shouldSendAsPush(@NonNull Recipient recipient, boolean forceSms) {
return recipient.isDistributionList() ||
recipient.isServiceIdOnly() ||
(recipient.isRegistered() && !forceSms);
}
private static @NonNull SlideDeck buildSlideDeck(@NonNull Context context, @NonNull MultiShareArgs multiShareArgs) throws SlideNotFoundException { private static @NonNull SlideDeck buildSlideDeck(@NonNull Context context, @NonNull MultiShareArgs multiShareArgs) throws SlideNotFoundException {
SlideDeck slideDeck = new SlideDeck(); SlideDeck slideDeck = new SlideDeck();
if (multiShareArgs.getStickerLocator() != null) { if (multiShareArgs.getStickerLocator() != null) {