Rename OutgoingMediaMessage -> OutgoingMessage.

This commit is contained in:
Greyson Parrelli
2022-12-14 16:19:12 -05:00
parent 9b60bd9a4b
commit a7e3bdc892
41 changed files with 438 additions and 441 deletions

View File

@@ -28,7 +28,7 @@ import org.thoughtcrime.securesms.contacts.SelectedContact;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.groups.SelectionLimits;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.sms.MessageSender;
@@ -254,7 +254,7 @@ public class InviteActivity extends PassphraseRequiredActivity implements Contac
Recipient recipient = Recipient.resolved(recipientId);
int subscriptionId = recipient.getDefaultSubscriptionId().orElse(-1);
MessageSender.send(context, OutgoingMediaMessage.sms(recipient, message, subscriptionId), -1L, true, null, null);
MessageSender.send(context, OutgoingMessage.sms(recipient, message, subscriptionId), -1L, true, null, null);
if (recipient.getContactUri() != null) {
SignalDatabase.recipients().setHasSentInvite(recipient.getId());

View File

@@ -5,7 +5,7 @@ import org.signal.libsignal.zkgroup.InvalidInputException
import org.signal.libsignal.zkgroup.receipts.ReceiptCredentialPresentation
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.database.model.databaseprotos.GiftBadge
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.util.Base64
import java.lang.Integer.min
@@ -29,8 +29,8 @@ object Gifts {
giftBadge: GiftBadge,
sentTimestamp: Long,
expiresIn: Long
): OutgoingMediaMessage {
return OutgoingMediaMessage(
): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
body = Base64.encodeBytes(giftBadge.toByteArray()),
isSecure = true,

View File

@@ -9,7 +9,7 @@ import org.thoughtcrime.securesms.database.ThreadTable
import org.thoughtcrime.securesms.groups.GroupChangeException
import org.thoughtcrime.securesms.groups.GroupManager
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.sms.MessageSender
@@ -39,7 +39,7 @@ class ExpireTimerSettingsRepository(val context: Context) {
}
} else {
SignalDatabase.recipients.setExpireMessages(recipientId, newExpirationTime)
val outgoingMessage = OutgoingMediaMessage.expirationUpdateMessage(Recipient.resolved(recipientId), System.currentTimeMillis(), newExpirationTime * 1000L)
val outgoingMessage = OutgoingMessage.expirationUpdateMessage(Recipient.resolved(recipientId), System.currentTimeMillis(), newExpirationTime * 1000L)
MessageSender.send(context, outgoingMessage, getThreadId(recipientId), false, null, null)
consumer.invoke(Result.success(newExpirationTime))
}

View File

@@ -20,7 +20,7 @@ import org.thoughtcrime.securesms.database.model.RecipientRecord
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.groups.GroupId
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientForeverObserver
import org.thoughtcrime.securesms.recipients.RecipientId
@@ -243,7 +243,7 @@ class InternalConversationSettingsFragment : DSLSettingsFragment(
val splitThreadId: Long = SignalDatabase.threads.getOrCreateThreadIdFor(splitRecipient)
val messageId: Long = SignalDatabase.sms.insertMessageOutbox(
OutgoingMediaMessage.text(splitRecipient, "Test Message ${System.currentTimeMillis()}", 0),
OutgoingMessage.text(splitRecipient, "Test Message ${System.currentTimeMillis()}", 0),
splitThreadId,
false,
null

View File

@@ -142,7 +142,7 @@ import org.thoughtcrime.securesms.messagerequests.MessageRequestState;
import org.thoughtcrime.securesms.messagerequests.MessageRequestViewModel;
import org.thoughtcrime.securesms.mms.AttachmentManager;
import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.TextSlide;
@@ -1194,7 +1194,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect
Toast.LENGTH_LONG).show();
}
public long stageOutgoingMessage(OutgoingMediaMessage message) {
public long stageOutgoingMessage(OutgoingMessage message) {
MessageRecord messageRecord = MessageTable.readerFor(message, threadId).getCurrent();
if (getListAdapter() != null) {

View File

@@ -237,7 +237,7 @@ import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.mms.ImageSlide;
import org.thoughtcrime.securesms.mms.MediaConstraints;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.mms.QuoteId;
import org.thoughtcrime.securesms.mms.QuoteModel;
import org.thoughtcrime.securesms.mms.Slide;
@@ -309,7 +309,6 @@ import org.thoughtcrime.securesms.wallpaper.ChatWallpaperDimLevelUtil;
import org.whispersystems.signalservice.api.SignalSessionLock;
import java.io.IOException;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -2971,29 +2970,29 @@ public class ConversationParentFragment extends Fragment
}
private void sendMediaMessage(@NonNull MediaSendActivityResult result) {
long thread = this.threadId;
long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds());
QuoteModel quote = result.isViewOnce() ? null : inputPanel.getQuote().orElse(null);
List<Mention> mentions = new ArrayList<>(result.getMentions());
OutgoingMediaMessage message = new OutgoingMediaMessage(recipient.get(),
result.getBody(),
Collections.emptyList(),
System.currentTimeMillis(),
-1,
expiresIn,
result.isViewOnce(),
distributionType,
result.getStoryType(),
null,
false,
quote,
Collections.emptyList(),
Collections.emptyList(),
mentions,
Collections.emptySet(),
Collections.emptySet(),
null,
true);
long thread = this.threadId;
long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds());
QuoteModel quote = result.isViewOnce() ? null : inputPanel.getQuote().orElse(null);
List<Mention> mentions = new ArrayList<>(result.getMentions());
OutgoingMessage message = new OutgoingMessage(recipient.get(),
result.getBody(),
Collections.emptyList(),
System.currentTimeMillis(),
-1,
expiresIn,
result.isViewOnce(),
distributionType,
result.getStoryType(),
null,
false,
quote,
Collections.emptyList(),
Collections.emptyList(),
mentions,
Collections.emptySet(),
Collections.emptySet(),
null,
true);
final Context context = requireContext().getApplicationContext();
@@ -3066,30 +3065,30 @@ public class ConversationParentFragment extends Fragment
}
}
OutgoingMediaMessage outgoingMessageCandidate = new OutgoingMediaMessage(Recipient.resolved(recipientId),
OutgoingMediaMessage.buildMessage(slideDeck, body),
slideDeck.asAttachments(),
System.currentTimeMillis(),
sendType.getSimSubscriptionIdOr(-1),
expiresIn,
viewOnce,
distributionType,
StoryType.NONE,
null,
false,
quote,
contacts,
previews,
mentions,
Collections.emptySet(),
Collections.emptySet(),
null,
false);
OutgoingMessage outgoingMessageCandidate = new OutgoingMessage(Recipient.resolved(recipientId),
OutgoingMessage.buildMessage(slideDeck, body),
slideDeck.asAttachments(),
System.currentTimeMillis(),
sendType.getSimSubscriptionIdOr(-1),
expiresIn,
viewOnce,
distributionType,
StoryType.NONE,
null,
false,
quote,
contacts,
previews,
mentions,
Collections.emptySet(),
Collections.emptySet(),
null,
false);
final SettableFuture<Void> future = new SettableFuture<>();
final Context context = requireContext().getApplicationContext();
final OutgoingMediaMessage outgoingMessage;
final OutgoingMessage outgoingMessage;
if (sendPush) {
outgoingMessage = outgoingMessageCandidate.makeSecure();
@@ -3137,13 +3136,13 @@ public class ConversationParentFragment extends Fragment
final String messageBody = getMessage();
final boolean sendPush = sendType.usesSignalTransport();
OutgoingMediaMessage message;
OutgoingMessage message;
if (sendPush) {
message = OutgoingMediaMessage.text(recipient.get(), messageBody, expiresIn, System.currentTimeMillis());
message = OutgoingMessage.text(recipient.get(), messageBody, expiresIn, System.currentTimeMillis());
ApplicationDependencies.getTypingStatusSender().onTypingStopped(thread);
} else {
message = OutgoingMediaMessage.sms(recipient.get(), messageBody, sendType.getSimSubscriptionIdOr(-1));
message = OutgoingMessage.sms(recipient.get(), messageBody, sendType.getSimSubscriptionIdOr(-1));
}
Permissions.with(this)

View File

@@ -80,7 +80,7 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.mms.IncomingMediaMessage;
import org.thoughtcrime.securesms.mms.MessageGroupContext;
import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.mms.QuoteModel;
import org.thoughtcrime.securesms.mms.SlideDeck;
import org.thoughtcrime.securesms.recipients.Recipient;
@@ -2194,7 +2194,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
}
}
public OutgoingMediaMessage getOutgoingMessage(long messageId)
public OutgoingMessage getOutgoingMessage(long messageId)
throws MmsException, NoSuchMessageException
{
AttachmentTable attachmentDatabase = SignalDatabase.attachments();
@@ -2265,15 +2265,15 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
}
if (body != null && (Types.isGroupQuit(outboxType) || Types.isGroupUpdate(outboxType))) {
return OutgoingMediaMessage.groupUpdateMessage(recipient, new MessageGroupContext(body, Types.isGroupV2(outboxType)), attachments, timestamp, 0, false, quote, contacts, previews, mentions);
return OutgoingMessage.groupUpdateMessage(recipient, new MessageGroupContext(body, Types.isGroupV2(outboxType)), attachments, timestamp, 0, false, quote, contacts, previews, mentions);
} else if (Types.isExpirationTimerUpdate(outboxType)) {
return OutgoingMediaMessage.expirationUpdateMessage(recipient, timestamp, expiresIn);
return OutgoingMessage.expirationUpdateMessage(recipient, timestamp, expiresIn);
} else if (Types.isPaymentsNotification(outboxType)) {
return OutgoingMediaMessage.paymentNotificationMessage(recipient, Objects.requireNonNull(body), timestamp, expiresIn);
return OutgoingMessage.paymentNotificationMessage(recipient, Objects.requireNonNull(body), timestamp, expiresIn);
} else if (Types.isPaymentsRequestToActivate(outboxType)) {
return OutgoingMediaMessage.requestToActivatePaymentsMessage(recipient, timestamp, expiresIn);
return OutgoingMessage.requestToActivatePaymentsMessage(recipient, timestamp, expiresIn);
} else if (Types.isPaymentsActivated(outboxType)) {
return OutgoingMediaMessage.paymentsActivatedMessage(recipient, timestamp, expiresIn);
return OutgoingMessage.paymentsActivatedMessage(recipient, timestamp, expiresIn);
}
GiftBadge giftBadge = null;
@@ -2281,25 +2281,25 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
giftBadge = GiftBadge.parseFrom(Base64.decode(body));
}
OutgoingMediaMessage message = new OutgoingMediaMessage(recipient,
body,
attachments,
timestamp,
subscriptionId,
expiresIn,
viewOnce,
distributionType,
storyType,
parentStoryId,
Types.isStoryReaction(outboxType),
quote,
contacts,
previews,
mentions,
networkFailures,
mismatches,
giftBadge,
Types.isSecureType(outboxType));
OutgoingMessage message = new OutgoingMessage(recipient,
body,
attachments,
timestamp,
subscriptionId,
expiresIn,
viewOnce,
distributionType,
storyType,
parentStoryId,
Types.isStoryReaction(outboxType),
quote,
contacts,
previews,
mentions,
networkFailures,
mismatches,
giftBadge,
Types.isSecureType(outboxType));
return message;
}
@@ -2703,7 +2703,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
}
}
public long insertMessageOutbox(@NonNull OutgoingMediaMessage message,
public long insertMessageOutbox(@NonNull OutgoingMessage message,
long threadId,
boolean forceSms,
@Nullable InsertListener insertListener)
@@ -2712,7 +2712,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
return insertMessageOutbox(message, threadId, forceSms, GroupReceiptTable.STATUS_UNDELIVERED, insertListener);
}
public long insertMessageOutbox(@NonNull OutgoingMediaMessage message,
public long insertMessageOutbox(@NonNull OutgoingMessage message,
long threadId, boolean forceSms, int defaultReceiptStatus,
@Nullable InsertListener insertListener)
throws MmsException
@@ -3335,7 +3335,7 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
return new SmsReader(cursor);
}
public static OutgoingMmsReader readerFor(OutgoingMediaMessage message, long threadId) {
public static OutgoingMmsReader readerFor(OutgoingMessage message, long threadId) {
return new OutgoingMmsReader(message, threadId);
}
@@ -4263,12 +4263,12 @@ public class MessageTable extends DatabaseTable implements MmsSmsColumns, Recipi
public static class OutgoingMmsReader {
private final Context context;
private final OutgoingMediaMessage message;
private final long id;
private final Context context;
private final OutgoingMessage message;
private final long id;
private final long threadId;
public OutgoingMmsReader(OutgoingMediaMessage message, long threadId) {
public OutgoingMmsReader(OutgoingMessage message, long threadId) {
this.context = ApplicationDependencies.getApplication();
this.message = message;
this.id = new SecureRandom().nextLong();

View File

@@ -19,7 +19,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.ThreadTable;
import org.thoughtcrime.securesms.groups.GroupManager.GroupActionResult;
import org.thoughtcrime.securesms.mms.MessageGroupContext;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.profiles.AvatarHelper;
import org.thoughtcrime.securesms.providers.BlobProvider;
import org.thoughtcrime.securesms.recipients.Recipient;
@@ -174,16 +174,16 @@ final class GroupManagerV1 {
avatarAttachment = new UriAttachment(avatarUri, MediaUtil.IMAGE_PNG, AttachmentTable.TRANSFER_PROGRESS_DONE, avatar.length, null, false, false, false, false, null, null, null, null, null);
}
OutgoingMediaMessage outgoingMessage = OutgoingMediaMessage.groupUpdateMessage(groupRecipient,
new MessageGroupContext(groupContext),
Collections.singletonList(avatarAttachment),
System.currentTimeMillis(),
0,
false,
null,
Collections.emptyList(),
Collections.emptyList(),
Collections.emptyList());
OutgoingMessage outgoingMessage = OutgoingMessage.groupUpdateMessage(groupRecipient,
new MessageGroupContext(groupContext),
Collections.singletonList(avatarAttachment),
System.currentTimeMillis(),
0,
false,
null,
Collections.emptyList(),
Collections.emptyList(),
Collections.emptyList());
long threadId = MessageSender.send(context, outgoingMessage, -1, false, null, null);
@@ -208,14 +208,14 @@ final class GroupManagerV1 {
long threadId = threadTable.getOrCreateThreadIdFor(recipient);
recipientTable.setExpireMessages(recipient.getId(), expirationTime);
OutgoingMediaMessage outgoingMessage = OutgoingMediaMessage.expirationUpdateMessage(recipient, System.currentTimeMillis(), expirationTime * 1000L);
OutgoingMessage outgoingMessage = OutgoingMessage.expirationUpdateMessage(recipient, System.currentTimeMillis(), expirationTime * 1000L);
MessageSender.send(context, outgoingMessage, threadId, false, null, null);
}
@WorkerThread
private static Optional<OutgoingMediaMessage> createGroupLeaveMessage(@NonNull Context context,
@NonNull GroupId.V1 groupId,
@NonNull Recipient groupRecipient)
private static Optional<OutgoingMessage> createGroupLeaveMessage(@NonNull Context context,
@NonNull GroupId.V1 groupId,
@NonNull Recipient groupRecipient)
{
GroupTable groupDatabase = SignalDatabase.groups();

View File

@@ -46,7 +46,7 @@ import org.thoughtcrime.securesms.jobs.PushGroupSilentUpdateSendJob;
import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.profiles.AvatarHelper;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
@@ -1264,7 +1264,7 @@ final class GroupManagerV2 {
GroupId.V2 groupId = GroupId.v2(masterKey);
Recipient groupRecipient = Recipient.externalGroupExact(groupId);
DecryptedGroupV2Context decryptedGroupV2Context = GroupProtoUtil.createDecryptedGroupV2Context(masterKey, groupMutation, signedGroupChange);
OutgoingMediaMessage outgoingMessage = OutgoingMediaMessage.groupUpdateMessage(groupRecipient, decryptedGroupV2Context, System.currentTimeMillis());
OutgoingMessage outgoingMessage = OutgoingMessage.groupUpdateMessage(groupRecipient, decryptedGroupV2Context, System.currentTimeMillis());
DecryptedGroupChange plainGroupChange = groupMutation.getGroupChange();

View File

@@ -41,7 +41,7 @@ import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob;
import org.thoughtcrime.securesms.jobs.RetrieveProfileJob;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.sms.IncomingGroupUpdateMessage;
@@ -512,7 +512,7 @@ public class GroupsV2StateProcessor {
.build();
DecryptedGroupV2Context decryptedGroupV2Context = GroupProtoUtil.createDecryptedGroupV2Context(masterKey, new GroupMutation(decryptedGroup, simulatedGroupChange, simulatedGroupState), null);
OutgoingMediaMessage leaveMessage = OutgoingMediaMessage.groupUpdateMessage(groupRecipient, decryptedGroupV2Context, System.currentTimeMillis());
OutgoingMessage leaveMessage = OutgoingMessage.groupUpdateMessage(groupRecipient, decryptedGroupV2Context, System.currentTimeMillis());
try {
MessageTable mmsDatabase = SignalDatabase.mms();
@@ -738,13 +738,13 @@ public class GroupsV2StateProcessor {
if (outgoing) {
try {
MessageTable mmsDatabase = SignalDatabase.mms();
ThreadTable threadTable = SignalDatabase.threads();
RecipientId recipientId = recipientTable.getOrInsertFromGroupId(groupId);
Recipient recipient = Recipient.resolved(recipientId);
OutgoingMediaMessage outgoingMessage = OutgoingMediaMessage.groupUpdateMessage(recipient, decryptedGroupV2Context, timestamp);
long threadId = threadTable.getOrCreateThreadIdFor(recipient);
long messageId = mmsDatabase.insertMessageOutbox(outgoingMessage, threadId, false, null);
MessageTable mmsDatabase = SignalDatabase.mms();
ThreadTable threadTable = SignalDatabase.threads();
RecipientId recipientId = recipientTable.getOrInsertFromGroupId(groupId);
Recipient recipient = Recipient.resolved(recipientId);
OutgoingMessage outgoingMessage = OutgoingMessage.groupUpdateMessage(recipient, decryptedGroupV2Context, timestamp);
long threadId = threadTable.getOrCreateThreadIdFor(recipient);
long messageId = mmsDatabase.insertMessageOutbox(outgoingMessage, threadId, false, null);
mmsDatabase.markAsSent(messageId, true);
threadTable.update(threadId, false, false);

View File

@@ -13,7 +13,7 @@ import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto;
import org.thoughtcrime.securesms.database.MmsSmsTable;
import org.thoughtcrime.securesms.database.RecipientTable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.sms.MessageSender;
@@ -78,7 +78,7 @@ public class InsightsRepository implements InsightsDashboardViewModel.Repository
int subscriptionId = resolved.getDefaultSubscriptionId().orElse(-1);
String message = context.getString(R.string.InviteActivity_lets_switch_to_signal, context.getString(R.string.install_url));
MessageSender.send(context, OutgoingMediaMessage.sms(resolved, message, subscriptionId), -1L, true, null, null);
MessageSender.send(context, OutgoingMessage.sms(resolved, message, subscriptionId), -1L, true, null, null);
RecipientTable database = SignalDatabase.recipients();
database.setHasSentInvite(recipient.getId());

View File

@@ -43,7 +43,7 @@ import org.thoughtcrime.securesms.mms.CompatMmsConnection;
import org.thoughtcrime.securesms.mms.MediaConstraints;
import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.MmsSendResult;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.notifications.v2.ConversationId;
import org.thoughtcrime.securesms.phonenumbers.NumberUtil;
@@ -80,8 +80,8 @@ public final class MmsSendJob extends SendJob {
/** Enqueues compression jobs for attachments and finally the MMS send job. */
@WorkerThread
public static void enqueue(@NonNull Context context, @NonNull JobManager jobManager, long messageId) {
MessageTable database = SignalDatabase.mms();
OutgoingMediaMessage message;
MessageTable database = SignalDatabase.mms();
OutgoingMessage message;
try {
message = database.getOutgoingMessage(messageId);
@@ -122,8 +122,8 @@ public final class MmsSendJob extends SendJob {
@Override
public void onSend() throws MmsException, NoSuchMessageException, IOException {
MessageTable database = SignalDatabase.mms();
OutgoingMediaMessage message = database.getOutgoingMessage(messageId);
MessageTable database = SignalDatabase.mms();
OutgoingMessage message = database.getOutgoingMessage(messageId);
if (database.isSent(messageId)) {
Log.w(TAG, "Message " + messageId + " was already sent. Ignoring.");
@@ -211,7 +211,7 @@ public final class MmsSendJob extends SendJob {
}
}
private void validateDestinations(OutgoingMediaMessage media, SendReq message) throws UndeliverableMessageException {
private void validateDestinations(OutgoingMessage media, SendReq message) throws UndeliverableMessageException {
validateDestinations(message.getTo());
validateDestinations(message.getCc());
validateDestinations(message.getBcc());
@@ -225,7 +225,7 @@ public final class MmsSendJob extends SendJob {
}
}
private SendReq constructSendPdu(OutgoingMediaMessage message)
private SendReq constructSendPdu(OutgoingMessage message)
throws UndeliverableMessageException
{
SendReq req = new SendReq();

View File

@@ -4,7 +4,7 @@ import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.jobmanager.Data
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.net.NotPushRegisteredException
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
@@ -63,7 +63,7 @@ class PaymentNotificationSendJobV2 private constructor(
MessageSender.send(
context,
OutgoingMediaMessage.paymentNotificationMessage(
OutgoingMessage.paymentNotificationMessage(
recipient,
uuid.toString(),
System.currentTimeMillis(),

View File

@@ -26,7 +26,7 @@ import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.messages.GroupSendUtil;
import org.thoughtcrime.securesms.messages.StorySendUtil;
import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.stories.Stories;
@@ -96,7 +96,7 @@ public final class PushDistributionListSendJob extends PushSendJob {
throw new AssertionError("Not a distribution list! MessageId: " + messageId);
}
OutgoingMediaMessage message = SignalDatabase.mms().getOutgoingMessage(messageId);
OutgoingMessage message = SignalDatabase.mms().getOutgoingMessage(messageId);
if (!message.getStoryType().isStory()) {
throw new AssertionError("Only story messages are currently supported! MessageId: " + messageId);
@@ -139,7 +139,7 @@ public final class PushDistributionListSendJob extends PushSendJob {
throws IOException, MmsException, NoSuchMessageException, RetryLaterException
{
MessageTable database = SignalDatabase.mms();
OutgoingMediaMessage message = database.getOutgoingMessage(messageId);
OutgoingMessage message = database.getOutgoingMessage(messageId);
Set<NetworkFailure> existingNetworkFailures = new HashSet<>(message.getNetworkFailures());
Set<IdentityKeyMismatch> existingIdentityMismatches = new HashSet<>(message.getIdentityKeyMismatches());
@@ -190,7 +190,7 @@ public final class PushDistributionListSendJob extends PushSendJob {
SignalDatabase.mms().markAsSentFailed(messageId);
}
private List<SendMessageResult> deliver(@NonNull OutgoingMediaMessage message, @NonNull List<Recipient> destinations)
private List<SendMessageResult> deliver(@NonNull OutgoingMessage message, @NonNull List<Recipient> destinations)
throws IOException, UntrustedIdentityException, UndeliverableMessageException
{
try {

View File

@@ -36,7 +36,7 @@ import org.thoughtcrime.securesms.messages.GroupSendUtil;
import org.thoughtcrime.securesms.messages.StorySendUtil;
import org.thoughtcrime.securesms.mms.MessageGroupContext;
import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.recipients.RecipientUtil;
@@ -112,9 +112,9 @@ public final class PushGroupSendJob extends PushSendJob {
throw new AssertionError("Not a group!");
}
MessageTable database = SignalDatabase.mms();
OutgoingMediaMessage message = database.getOutgoingMessage(messageId);
Set<String> attachmentUploadIds = enqueueCompressingAndUploadAttachmentsChains(jobManager, message);
MessageTable database = SignalDatabase.mms();
OutgoingMessage message = database.getOutgoingMessage(messageId);
Set<String> attachmentUploadIds = enqueueCompressingAndUploadAttachmentsChains(jobManager, message);
if (message.getGiftBadge() != null) {
throw new MmsException("Cannot send a gift badge to a group!");
@@ -140,7 +140,7 @@ public final class PushGroupSendJob extends PushSendJob {
.build();
}
private static boolean isGv2UpdateMessage(@NonNull OutgoingMediaMessage message) {
private static boolean isGv2UpdateMessage(@NonNull OutgoingMessage message) {
return message.isGroupUpdate() && message.isV2Group();
}
@@ -160,9 +160,9 @@ public final class PushGroupSendJob extends PushSendJob {
{
SignalLocalMetrics.GroupMessageSend.onJobStarted(messageId);
MessageTable database = SignalDatabase.mms();
OutgoingMediaMessage message = database.getOutgoingMessage(messageId);
long threadId = database.getMessageRecord(messageId).getThreadId();
MessageTable database = SignalDatabase.mms();
OutgoingMessage message = database.getOutgoingMessage(messageId);
long threadId = database.getMessageRecord(messageId).getThreadId();
Set<NetworkFailure> existingNetworkFailures = new HashSet<>(message.getNetworkFailures());
Set<IdentityKeyMismatch> existingIdentityMismatches = new HashSet<>(message.getIdentityKeyMismatches());
@@ -234,7 +234,7 @@ public final class PushGroupSendJob extends PushSendJob {
SignalDatabase.mms().markAsSentFailed(messageId);
}
private List<SendMessageResult> deliver(OutgoingMediaMessage message, @NonNull Recipient groupRecipient, @NonNull List<Recipient> destinations)
private List<SendMessageResult> deliver(OutgoingMessage message, @NonNull Recipient groupRecipient, @NonNull List<Recipient> destinations)
throws IOException, UntrustedIdentityException, UndeliverableMessageException
{
try {
@@ -373,7 +373,7 @@ public final class PushGroupSendJob extends PushSendJob {
long messageId,
long threadId,
@Nullable Recipient groupRecipient,
@NonNull OutgoingMediaMessage message,
@NonNull OutgoingMessage message,
@NonNull List<SendMessageResult> results,
@NonNull List<Recipient> target,
@NonNull List<RecipientId> skipped,

View File

@@ -18,7 +18,7 @@ import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.messages.GroupSendUtil;
import org.thoughtcrime.securesms.mms.MessageGroupContext;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.net.NotPushRegisteredException;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
@@ -68,7 +68,7 @@ public final class PushGroupSilentUpdateSendJob extends BaseJob {
public static @NonNull Job create(@NonNull Context context,
@NonNull GroupId.V2 groupId,
@NonNull DecryptedGroup decryptedGroup,
@NonNull OutgoingMediaMessage groupMessage)
@NonNull OutgoingMessage groupMessage)
{
List<UUID> memberUuids = DecryptedGroupUtil.toUuidList(decryptedGroup.getMembersList());
List<UUID> pendingUuids = DecryptedGroupUtil.pendingToUuidList(decryptedGroup.getPendingMembersList());

View File

@@ -24,7 +24,7 @@ import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.recipients.RecipientUtil;
@@ -83,9 +83,9 @@ public class PushMediaSendJob extends PushSendJob {
throw new AssertionError("No ServiceId!");
}
MessageTable database = SignalDatabase.mms();
OutgoingMediaMessage message = database.getOutgoingMessage(messageId);
Set<String> attachmentUploadIds = enqueueCompressingAndUploadAttachmentsChains(jobManager, message);
MessageTable database = SignalDatabase.mms();
OutgoingMessage message = database.getOutgoingMessage(messageId);
Set<String> attachmentUploadIds = enqueueCompressingAndUploadAttachmentsChains(jobManager, message);
jobManager.add(new PushMediaSendJob(messageId, recipient, attachmentUploadIds.size() > 0), attachmentUploadIds, recipient.getId().toQueueKey());
@@ -116,9 +116,9 @@ public class PushMediaSendJob extends PushSendJob {
throws IOException, MmsException, NoSuchMessageException, UndeliverableMessageException, RetryLaterException
{
ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
MessageTable database = SignalDatabase.mms();
OutgoingMediaMessage message = database.getOutgoingMessage(messageId);
long threadId = database.getMessageRecord(messageId).getThreadId();
MessageTable database = SignalDatabase.mms();
OutgoingMessage message = database.getOutgoingMessage(messageId);
long threadId = database.getMessageRecord(messageId).getThreadId();
if (database.isSent(messageId)) {
warn(TAG, String.valueOf(message.getSentTimeMillis()), "Message " + messageId + " was already sent. Ignoring.");
@@ -191,7 +191,7 @@ public class PushMediaSendJob extends PushSendJob {
notifyMediaMessageDeliveryFailed(context, messageId);
}
private boolean deliver(OutgoingMediaMessage message)
private boolean deliver(OutgoingMessage message)
throws IOException, InsecureFallbackApprovalException, UntrustedIdentityException, UndeliverableMessageException
{
if (message.getRecipient() == null) {
@@ -285,7 +285,7 @@ public class PushMediaSendJob extends PushSendJob {
}
}
private SignalServiceDataMessage.Payment getPayment(OutgoingMediaMessage message) {
private SignalServiceDataMessage.Payment getPayment(OutgoingMessage message) {
if (message.isPaymentsNotification()) {
UUID paymentUuid = UuidUtil.parseOrThrow(message.getBody());
PaymentTable.PaymentTransaction payment = SignalDatabase.payments().getPayment(paymentUuid);

View File

@@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.jobs;
import android.content.Context;
import android.graphics.Bitmap;
import android.media.Image;
import android.os.Build;
import android.text.TextUtils;
@@ -41,9 +40,8 @@ import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.keyvalue.CertificateType;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader;
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.mms.QuoteModel;
import org.thoughtcrime.securesms.net.NotPushRegisteredException;
@@ -203,7 +201,7 @@ public abstract class PushSendJob extends SendJob {
return null;
}
protected static Set<String> enqueueCompressingAndUploadAttachmentsChains(@NonNull JobManager jobManager, OutgoingMediaMessage message) {
protected static Set<String> enqueueCompressingAndUploadAttachmentsChains(@NonNull JobManager jobManager, OutgoingMessage message) {
List<Attachment> attachments = new LinkedList<>();
attachments.addAll(message.getAttachments());
@@ -301,7 +299,7 @@ public abstract class PushSendJob extends SendJob {
}
}
protected Optional<SignalServiceDataMessage.Quote> getQuoteFor(OutgoingMediaMessage message) throws IOException {
protected Optional<SignalServiceDataMessage.Quote> getQuoteFor(OutgoingMessage message) throws IOException {
if (message.getOutgoingQuote() == null) return Optional.empty();
long quoteId = message.getOutgoingQuote().getId();
@@ -364,7 +362,7 @@ public abstract class PushSendJob extends SendJob {
}
}
protected Optional<SignalServiceDataMessage.Sticker> getStickerFor(OutgoingMediaMessage message) {
protected Optional<SignalServiceDataMessage.Sticker> getStickerFor(OutgoingMessage message) {
Attachment stickerAttachment = Stream.of(message.getAttachments()).filter(Attachment::isSticker).findFirst().orElse(null);
if (stickerAttachment == null) {
@@ -386,7 +384,7 @@ public abstract class PushSendJob extends SendJob {
}
}
protected Optional<SignalServiceDataMessage.Reaction> getStoryReactionFor(@NonNull OutgoingMediaMessage message, @NonNull SignalServiceDataMessage.StoryContext storyContext) {
protected Optional<SignalServiceDataMessage.Reaction> getStoryReactionFor(@NonNull OutgoingMessage message, @NonNull SignalServiceDataMessage.StoryContext storyContext) {
if (message.isStoryReaction()) {
return Optional.of(new SignalServiceDataMessage.Reaction(message.getBody(),
false,
@@ -397,7 +395,7 @@ public abstract class PushSendJob extends SendJob {
}
}
List<SharedContact> getSharedContactsFor(OutgoingMediaMessage mediaMessage) {
List<SharedContact> getSharedContactsFor(OutgoingMessage mediaMessage) {
List<SharedContact> sharedContacts = new LinkedList<>();
for (Contact contact : mediaMessage.getSharedContacts()) {
@@ -417,7 +415,7 @@ public abstract class PushSendJob extends SendJob {
return sharedContacts;
}
List<SignalServicePreview> getPreviewsFor(OutgoingMediaMessage mediaMessage) {
List<SignalServicePreview> getPreviewsFor(OutgoingMessage mediaMessage) {
return Stream.of(mediaMessage.getLinkPreviews()).map(lp -> {
SignalServiceAttachment attachment = lp.getThumbnail().isPresent() ? getAttachmentPointerFor(lp.getThumbnail().get()) : null;
return new SignalServicePreview(lp.getUrl(), lp.getTitle(), lp.getDescription(), lp.getDate(), Optional.ofNullable(attachment));
@@ -430,7 +428,7 @@ public abstract class PushSendJob extends SendJob {
.toList();
}
@Nullable SignalServiceDataMessage.GiftBadge getGiftBadgeFor(@NonNull OutgoingMediaMessage message) throws UndeliverableMessageException {
@Nullable SignalServiceDataMessage.GiftBadge getGiftBadgeFor(@NonNull OutgoingMessage message) throws UndeliverableMessageException {
GiftBadge giftBadge = message.getGiftBadge();
if (giftBadge == null) {
return null;

View File

@@ -14,7 +14,7 @@ import org.thoughtcrime.securesms.database.AttachmentTable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.util.Util;
import java.util.LinkedList;
@@ -45,7 +45,7 @@ public abstract class SendJob extends BaseJob {
protected abstract void onSend() throws Exception;
protected static void markAttachmentsUploaded(long messageId, @NonNull OutgoingMediaMessage message) {
protected static void markAttachmentsUploaded(long messageId, @NonNull OutgoingMessage message) {
List<Attachment> attachments = new LinkedList<>();
attachments.addAll(message.getAttachments());

View File

@@ -5,7 +5,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.jobmanager.Data
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.net.NotPushRegisteredException
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.sms.MessageSender
@@ -45,7 +45,7 @@ class SendPaymentsActivatedJob(parameters: Parameters) : BaseJob(parameters) {
if (recipient != null) {
MessageSender.send(
context,
OutgoingMediaMessage.paymentsActivatedMessage(recipient, System.currentTimeMillis(), 0),
OutgoingMessage.paymentsActivatedMessage(recipient, System.currentTimeMillis(), 0),
threadId,
false,
null,

View File

@@ -30,7 +30,7 @@ import org.thoughtcrime.securesms.mediasend.SentMediaQualityTransform
import org.thoughtcrime.securesms.mediasend.VideoEditorFragment
import org.thoughtcrime.securesms.mediasend.VideoTrimTransform
import org.thoughtcrime.securesms.mms.MediaConstraints
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.mms.SentMediaQuality
import org.thoughtcrime.securesms.mms.Slide
import org.thoughtcrime.securesms.providers.BlobProvider
@@ -229,9 +229,9 @@ class MediaSelectionRepository(context: Context) {
isViewOnce: Boolean,
storyClips: List<Media>
) {
val nonStoryMessages: MutableList<OutgoingMediaMessage> = ArrayList(contacts.size)
val storyPreUploadMessages: MutableMap<PreUploadResult, MutableList<OutgoingMediaMessage>> = mutableMapOf()
val storyClipMessages: MutableList<OutgoingMediaMessage> = ArrayList()
val nonStoryMessages: MutableList<OutgoingMessage> = ArrayList(contacts.size)
val storyPreUploadMessages: MutableMap<PreUploadResult, MutableList<OutgoingMessage>> = mutableMapOf()
val storyClipMessages: MutableList<OutgoingMessage> = ArrayList()
val distributionListPreUploadSentTimestamps: MutableMap<PreUploadResult, Long> = mutableMapOf()
val distributionListStoryClipsSentTimestamps: MutableMap<MediaKey, Long> = mutableMapOf()
@@ -249,7 +249,7 @@ class MediaSelectionRepository(context: Context) {
else -> StoryType.NONE
}
val message = OutgoingMediaMessage(
val message = OutgoingMessage(
recipient = recipient,
body = body,
sentTimeMillis = if (recipient.isDistributionList) distributionListPreUploadSentTimestamps.getOrPut(preUploadResults.first()) { System.currentTimeMillis() } else System.currentTimeMillis(),
@@ -279,7 +279,7 @@ class MediaSelectionRepository(context: Context) {
storyClips.forEach {
storyClipMessages.add(
OutgoingMediaMessage(
OutgoingMessage(
recipient = recipient,
body = body,
attachments = listOf(MediaUploadRepository.asAttachment(context, it)),

View File

@@ -16,7 +16,7 @@ import org.thoughtcrime.securesms.keyvalue.StorySend
import org.thoughtcrime.securesms.linkpreview.LinkPreview
import org.thoughtcrime.securesms.mediasend.v2.UntrustedRecords
import org.thoughtcrime.securesms.mediasend.v2.text.TextStoryPostCreationState
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.providers.BlobProvider
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.stories.Stories
@@ -59,7 +59,7 @@ class TextStoryPostSendRepository {
private fun performSend(contactSearchKey: Set<ContactSearchKey>, textStoryPostCreationState: TextStoryPostCreationState, linkPreview: LinkPreview?): Single<TextStoryPostSendResult> {
return Single.fromCallable {
val messages: MutableList<OutgoingMediaMessage> = mutableListOf()
val messages: MutableList<OutgoingMessage> = mutableListOf()
val distributionListSentTimestamp = System.currentTimeMillis()
for (contact in contactSearchKey) {
@@ -76,7 +76,7 @@ class TextStoryPostSendRepository {
else -> StoryType.NONE
}
val message = OutgoingMediaMessage(
val message = OutgoingMessage(
recipient = recipient,
body = serializeTextStoryState(textStoryPostCreationState),
timestamp = if (recipient.isDistributionList) distributionListSentTimestamp else System.currentTimeMillis(),

View File

@@ -103,7 +103,7 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil;
import org.thoughtcrime.securesms.mms.IncomingMediaMessage;
import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.mms.QuoteModel;
import org.thoughtcrime.securesms.mms.SlideDeck;
import org.thoughtcrime.securesms.mms.StickerSlide;
@@ -774,8 +774,8 @@ public final class MessageContentProcessor {
log(envelopeTimestamp, "Synchronize end session message.");
MessageTable database = SignalDatabase.sms();
Recipient recipient = getSyncMessageDestination(message);
OutgoingMediaMessage outgoingEndSessionMessage = OutgoingMediaMessage.endSessionMessage(recipient, message.getTimestamp());
Recipient recipient = getSyncMessageDestination(message);
OutgoingMessage outgoingEndSessionMessage = OutgoingMessage.endSessionMessage(recipient, message.getTimestamp());
long threadId = SignalDatabase.threads().getOrCreateThreadIdFor(recipient);
@@ -1959,9 +1959,9 @@ public final class MessageContentProcessor {
MessageTable database = SignalDatabase.mms();
Recipient recipient = getSyncMessageDestination(message);
OutgoingMediaMessage expirationUpdateMessage = OutgoingMediaMessage.expirationUpdateMessage(recipient,
message.getTimestamp(),
TimeUnit.SECONDS.toMillis(message.getDataMessage().get().getExpiresInSeconds()));
OutgoingMessage expirationUpdateMessage = OutgoingMessage.expirationUpdateMessage(recipient,
message.getTimestamp(),
TimeUnit.SECONDS.toMillis(message.getDataMessage().get().getExpiresInSeconds()));
long threadId = SignalDatabase.threads().getOrCreateThreadIdFor(recipient);
long messageId = database.insertMessageOutbox(expirationUpdateMessage, threadId, false, null);
@@ -2019,25 +2019,25 @@ public final class MessageContentProcessor {
return -1L;
}
OutgoingMediaMessage mediaMessage = new OutgoingMediaMessage(recipient,
body,
Collections.emptyList(),
message.getTimestamp(),
-1,
expiresInMillis,
false,
ThreadTable.DistributionTypes.DEFAULT,
StoryType.NONE,
parentStoryId,
message.getDataMessage().get().getReaction().isPresent(),
quoteModel,
Collections.emptyList(),
Collections.emptyList(),
getMentions(message.getDataMessage().get().getMentions()).orElse(Collections.emptyList()),
Collections.emptySet(),
Collections.emptySet(),
null,
true);
OutgoingMessage mediaMessage = new OutgoingMessage(recipient,
body,
Collections.emptyList(),
message.getTimestamp(),
-1,
expiresInMillis,
false,
ThreadTable.DistributionTypes.DEFAULT,
StoryType.NONE,
parentStoryId,
message.getDataMessage().get().getReaction().isPresent(),
quoteModel,
Collections.emptyList(),
Collections.emptyList(),
getMentions(message.getDataMessage().get().getMentions()).orElse(Collections.emptyList()),
Collections.emptySet(),
Collections.emptySet(),
null,
true);
if (recipient.getExpiresInSeconds() != message.getDataMessage().get().getExpiresInSeconds()) {
handleSynchronizeSentExpirationUpdate(message);
@@ -2138,25 +2138,25 @@ public final class MessageContentProcessor {
return;
}
OutgoingMediaMessage mediaMessage = new OutgoingMediaMessage(recipient,
textStoryBody,
pendingAttachments,
sentAtTimestamp,
-1,
0,
false,
ThreadTable.DistributionTypes.DEFAULT,
storyType,
null,
false,
null,
Collections.emptyList(),
linkPreviews,
Collections.emptyList(),
Collections.emptySet(),
Collections.emptySet(),
null,
true);
OutgoingMessage mediaMessage = new OutgoingMessage(recipient,
textStoryBody,
pendingAttachments,
sentAtTimestamp,
-1,
0,
false,
ThreadTable.DistributionTypes.DEFAULT,
storyType,
null,
false,
null,
Collections.emptyList(),
linkPreviews,
Collections.emptyList(),
Collections.emptySet(),
Collections.emptySet(),
null,
true);
MessageTable database = SignalDatabase.mms();
long threadId = SignalDatabase.threads().getOrCreateThreadIdFor(recipient);
@@ -2233,25 +2233,25 @@ public final class MessageContentProcessor {
syncAttachments.add(sticker.get());
}
OutgoingMediaMessage mediaMessage = new OutgoingMediaMessage(recipients,
message.getDataMessage().get().getBody().orElse(null),
syncAttachments,
message.getTimestamp(),
-1,
TimeUnit.SECONDS.toMillis(message.getDataMessage().get().getExpiresInSeconds()),
viewOnce,
ThreadTable.DistributionTypes.DEFAULT,
StoryType.NONE,
null,
false,
quote.orElse(null),
sharedContacts.orElse(Collections.emptyList()),
previews.orElse(Collections.emptyList()),
mentions.orElse(Collections.emptyList()),
Collections.emptySet(),
Collections.emptySet(),
giftBadge.orElse(null),
true);
OutgoingMessage mediaMessage = new OutgoingMessage(recipients,
message.getDataMessage().get().getBody().orElse(null),
syncAttachments,
message.getTimestamp(),
-1,
TimeUnit.SECONDS.toMillis(message.getDataMessage().get().getExpiresInSeconds()),
viewOnce,
ThreadTable.DistributionTypes.DEFAULT,
StoryType.NONE,
null,
false,
quote.orElse(null),
sharedContacts.orElse(Collections.emptyList()),
previews.orElse(Collections.emptyList()),
mentions.orElse(Collections.emptyList()),
Collections.emptySet(),
Collections.emptySet(),
giftBadge.orElse(null),
true);
if (recipients.getExpiresInSeconds() != message.getDataMessage().get().getExpiresInSeconds()) {
handleSynchronizeSentExpirationUpdate(message);
@@ -2426,24 +2426,24 @@ public final class MessageContentProcessor {
long messageId;
if (isGroup) {
OutgoingMediaMessage outgoingMediaMessage = new OutgoingMediaMessage(recipient,
new SlideDeck(),
body,
message.getTimestamp(),
-1,
expiresInMillis,
false,
StoryType.NONE,
Collections.emptyList(),
Collections.emptyList(),
true);
OutgoingMessage outgoingMessage = new OutgoingMessage(recipient,
new SlideDeck(),
body,
message.getTimestamp(),
-1,
expiresInMillis,
false,
StoryType.NONE,
Collections.emptyList(),
Collections.emptyList(),
true);
messageId = SignalDatabase.mms().insertMessageOutbox(outgoingMediaMessage, threadId, false, GroupReceiptTable.STATUS_UNKNOWN, null);
messageId = SignalDatabase.mms().insertMessageOutbox(outgoingMessage, threadId, false, GroupReceiptTable.STATUS_UNKNOWN, null);
database = SignalDatabase.mms();
updateGroupReceiptStatus(message, messageId, recipient.requireGroupId());
} else {
OutgoingMediaMessage outgoingTextMessage = OutgoingMediaMessage.text(recipient, body, expiresInMillis, message.getTimestamp());
OutgoingMessage outgoingTextMessage = OutgoingMessage.text(recipient, body, expiresInMillis, message.getTimestamp());
messageId = SignalDatabase.sms().insertMessageOutbox(outgoingTextMessage, threadId, false, null);
database = SignalDatabase.sms();

View File

@@ -2,7 +2,7 @@ package org.thoughtcrime.securesms.messages
import com.google.protobuf.InvalidProtocolBufferException
import org.thoughtcrime.securesms.database.model.databaseprotos.StoryTextPost
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.util.Base64
import org.whispersystems.signalservice.api.messages.SignalServicePreview
import org.whispersystems.signalservice.api.messages.SignalServiceTextAttachment
@@ -12,7 +12,7 @@ import kotlin.math.roundToInt
object StorySendUtil {
@JvmStatic
@Throws(InvalidProtocolBufferException::class)
fun deserializeBodyToStoryTextAttachment(message: OutgoingMediaMessage, getPreviewsFor: (OutgoingMediaMessage) -> List<SignalServicePreview>): SignalServiceTextAttachment {
fun deserializeBodyToStoryTextAttachment(message: OutgoingMessage, getPreviewsFor: (OutgoingMessage) -> List<SignalServicePreview>): SignalServiceTextAttachment {
val storyTextPost = StoryTextPost.parseFrom(Base64.decode(message.body))
val preview = if (message.linkPreviews.isEmpty()) {
Optional.empty()

View File

@@ -463,7 +463,7 @@ public class AttachmentManager {
.setTitle(context.getString(R.string.AttachmentManager__not_activated_payments, recipient.getShortDisplayName(context)))
.setMessage(context.getString(R.string.AttachmentManager__request_to_activate_payments))
.setPositiveButton(context.getString(R.string.AttachmentManager__send_request), (dialog, which) -> {
OutgoingMediaMessage outgoingMessage = OutgoingMediaMessage.requestToActivatePaymentsMessage(recipient, System.currentTimeMillis(), 0);
OutgoingMessage outgoingMessage = OutgoingMessage.requestToActivatePaymentsMessage(recipient, System.currentTimeMillis(), 0);
MessageSender.send(context, outgoingMessage, SignalDatabase.threads().getOrCreateThreadIdFor(recipient), false, null, null);
})
.setNegativeButton(context.getString(R.string.AttachmentManager__cancel), null)

View File

@@ -15,9 +15,9 @@ import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.sms.GroupV2UpdateMessageUtil
/**
* Outgoing media message for all outgoing media messages (push/mms, group updates, expiration updates, payments, etc.)
* Represents all the data needed for an outgoing message.
*/
data class OutgoingMediaMessage(
data class OutgoingMessage(
val recipient: Recipient,
val sentTimeMillis: Long,
val body: String = "",
@@ -127,15 +127,15 @@ data class OutgoingMediaMessage(
isSecure = isSecure
)
fun withExpiry(expiresIn: Long): OutgoingMediaMessage {
fun withExpiry(expiresIn: Long): OutgoingMessage {
return copy(expiresIn = expiresIn)
}
fun stripAttachments(): OutgoingMediaMessage {
fun stripAttachments(): OutgoingMessage {
return copy(attachments = emptyList())
}
fun makeSecure(): OutgoingMediaMessage {
fun makeSecure(): OutgoingMessage {
return copy(isSecure = true)
}
@@ -153,8 +153,8 @@ data class OutgoingMediaMessage(
* A literal, insecure SMS message.
*/
@JvmStatic
fun sms(recipient: Recipient, body: String, subscriptionId: Int): OutgoingMediaMessage {
return OutgoingMediaMessage(
fun sms(recipient: Recipient, body: String, subscriptionId: Int): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
sentTimeMillis = System.currentTimeMillis(),
body = body,
@@ -167,8 +167,8 @@ data class OutgoingMediaMessage(
* A secure message that only contains text.
*/
@JvmStatic
fun text(recipient: Recipient, body: String, expiresIn: Long, sentTimeMillis: Long = System.currentTimeMillis()): OutgoingMediaMessage {
return OutgoingMediaMessage(
fun text(recipient: Recipient, body: String, expiresIn: Long, sentTimeMillis: Long = System.currentTimeMillis()): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
sentTimeMillis = sentTimeMillis,
body = body,
@@ -182,10 +182,10 @@ data class OutgoingMediaMessage(
* Helper for creating a group update message when a state change occurs and needs to be sent to others.
*/
@JvmStatic
fun groupUpdateMessage(recipient: Recipient, group: DecryptedGroupV2Context, sentTimeMillis: Long): OutgoingMediaMessage {
fun groupUpdateMessage(recipient: Recipient, group: DecryptedGroupV2Context, sentTimeMillis: Long): OutgoingMessage {
val groupContext = MessageGroupContext(group)
return OutgoingMediaMessage(
return OutgoingMessage(
recipient = recipient,
body = groupContext.encodedGroupContext,
sentTimeMillis = sentTimeMillis,
@@ -211,8 +211,8 @@ data class OutgoingMediaMessage(
contacts: List<Contact> = emptyList(),
previews: List<LinkPreview> = emptyList(),
mentions: List<Mention> = emptyList()
): OutgoingMediaMessage {
return OutgoingMediaMessage(
): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
body = groupContext.encodedGroupContext,
isGroup = true,
@@ -240,8 +240,8 @@ data class OutgoingMediaMessage(
sentTimeMillis: Long,
storyType: StoryType,
linkPreviews: List<LinkPreview>
): OutgoingMediaMessage {
return OutgoingMediaMessage(
): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
body = body,
sentTimeMillis = sentTimeMillis,
@@ -255,8 +255,8 @@ data class OutgoingMediaMessage(
* Specialized message sent to request someone activate payments.
*/
@JvmStatic
fun requestToActivatePaymentsMessage(recipient: Recipient, sentTimeMillis: Long, expiresIn: Long): OutgoingMediaMessage {
return OutgoingMediaMessage(
fun requestToActivatePaymentsMessage(recipient: Recipient, sentTimeMillis: Long, expiresIn: Long): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
sentTimeMillis = sentTimeMillis,
expiresIn = expiresIn,
@@ -271,8 +271,8 @@ data class OutgoingMediaMessage(
* be sent to those that sent requests prior to activation.
*/
@JvmStatic
fun paymentsActivatedMessage(recipient: Recipient, sentTimeMillis: Long, expiresIn: Long): OutgoingMediaMessage {
return OutgoingMediaMessage(
fun paymentsActivatedMessage(recipient: Recipient, sentTimeMillis: Long, expiresIn: Long): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
sentTimeMillis = sentTimeMillis,
expiresIn = expiresIn,
@@ -286,8 +286,8 @@ data class OutgoingMediaMessage(
* Type of message sent when sending a payment to another Signal contact.
*/
@JvmStatic
fun paymentNotificationMessage(recipient: Recipient, paymentUuid: String, sentTimeMillis: Long, expiresIn: Long): OutgoingMediaMessage {
return OutgoingMediaMessage(
fun paymentNotificationMessage(recipient: Recipient, paymentUuid: String, sentTimeMillis: Long, expiresIn: Long): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
body = paymentUuid,
sentTimeMillis = sentTimeMillis,
@@ -301,8 +301,8 @@ data class OutgoingMediaMessage(
* Helper for creating expiration update messages.
*/
@JvmStatic
fun expirationUpdateMessage(recipient: Recipient, sentTimeMillis: Long, expiresIn: Long): OutgoingMediaMessage {
return OutgoingMediaMessage(
fun expirationUpdateMessage(recipient: Recipient, sentTimeMillis: Long, expiresIn: Long): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
sentTimeMillis = sentTimeMillis,
expiresIn = expiresIn,
@@ -316,8 +316,8 @@ data class OutgoingMediaMessage(
* Message for when you have verified the identity of a contact.
*/
@JvmStatic
fun identityVerifiedMessage(recipient: Recipient, sentTimeMillis: Long): OutgoingMediaMessage {
return OutgoingMediaMessage(
fun identityVerifiedMessage(recipient: Recipient, sentTimeMillis: Long): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
sentTimeMillis = sentTimeMillis,
isIdentityVerified = true,
@@ -330,8 +330,8 @@ data class OutgoingMediaMessage(
* Message for when the verification status of an identity is getting set to the default.
*/
@JvmStatic
fun identityDefaultMessage(recipient: Recipient, sentTimeMillis: Long): OutgoingMediaMessage {
return OutgoingMediaMessage(
fun identityDefaultMessage(recipient: Recipient, sentTimeMillis: Long): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
sentTimeMillis = sentTimeMillis,
isIdentityDefault = true,
@@ -345,8 +345,8 @@ data class OutgoingMediaMessage(
* but it doesn't hurt to support receiving them in sync messages.
*/
@JvmStatic
fun endSessionMessage(recipient: Recipient, sentTimeMillis: Long): OutgoingMediaMessage {
return OutgoingMediaMessage(
fun endSessionMessage(recipient: Recipient, sentTimeMillis: Long): OutgoingMessage {
return OutgoingMessage(
recipient = recipient,
sentTimeMillis = sentTimeMillis,
isEndSession = true,

View File

@@ -31,7 +31,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.model.ParentStoryId;
import org.thoughtcrime.securesms.database.model.StoryType;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.notifications.v2.DefaultMessageNotifier;
import org.thoughtcrime.securesms.notifications.v2.ConversationId;
import org.thoughtcrime.securesms.recipients.Recipient;
@@ -82,35 +82,35 @@ public class RemoteReplyReceiver extends BroadcastReceiver {
switch (replyMethod) {
case GroupMessage: {
OutgoingMediaMessage reply = new OutgoingMediaMessage(recipient,
responseText.toString(),
new LinkedList<>(),
System.currentTimeMillis(),
subscriptionId,
expiresIn,
false,
0,
StoryType.NONE,
parentStoryId,
false,
null,
Collections.emptyList(),
Collections.emptyList(),
Collections.emptyList(),
Collections.emptySet(),
Collections.emptySet(),
null,
recipient.isPushGroup());
OutgoingMessage reply = new OutgoingMessage(recipient,
responseText.toString(),
new LinkedList<>(),
System.currentTimeMillis(),
subscriptionId,
expiresIn,
false,
0,
StoryType.NONE,
parentStoryId,
false,
null,
Collections.emptyList(),
Collections.emptyList(),
Collections.emptyList(),
Collections.emptySet(),
Collections.emptySet(),
null,
recipient.isPushGroup());
threadId = MessageSender.send(context, reply, -1, false, null, null);
break;
}
case SecureMessage: {
OutgoingMediaMessage reply = OutgoingMediaMessage.text(recipient, responseText.toString(), expiresIn, System.currentTimeMillis());
OutgoingMessage reply = OutgoingMessage.text(recipient, responseText.toString(), expiresIn, System.currentTimeMillis());
threadId = MessageSender.send(context, reply, -1, false, null, null);
break;
}
case UnsecuredSmsMessage: {
OutgoingMediaMessage reply = OutgoingMediaMessage.sms(recipient, responseText.toString(), subscriptionId);
OutgoingMessage reply = OutgoingMessage.sms(recipient, responseText.toString(), subscriptionId);
threadId = MessageSender.send(context, reply, -1, true, null, null);
break;
}

View File

@@ -24,7 +24,7 @@ import org.thoughtcrime.securesms.jobs.MultiDeviceMessageRequestResponseJob;
import org.thoughtcrime.securesms.jobs.RefreshOwnProfileJob;
import org.thoughtcrime.securesms.jobs.RotateProfileKeyJob;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.sms.MessageSender;
import org.thoughtcrime.securesms.storage.StorageSyncHelper;
import org.whispersystems.signalservice.api.push.ServiceId;
@@ -319,7 +319,7 @@ public class RecipientUtil {
if (threadId == -1 || !SignalDatabase.mmsSms().hasMeaningfulMessage(threadId)) {
SignalDatabase.recipients().setExpireMessages(recipient.getId(), defaultTimer);
OutgoingMediaMessage outgoingMessage = OutgoingMediaMessage.expirationUpdateMessage(recipient, System.currentTimeMillis(), defaultTimer * 1000L);
OutgoingMessage outgoingMessage = OutgoingMessage.expirationUpdateMessage(recipient, System.currentTimeMillis(), defaultTimer * 1000L);
MessageSender.send(context, outgoingMessage, SignalDatabase.threads().getOrCreateThreadIdFor(recipient), false, null, null);
return true;
}

View File

@@ -8,7 +8,7 @@ import android.widget.Toast;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.sms.MessageSender;
import org.thoughtcrime.securesms.util.Rfc5724Uri;
@@ -50,7 +50,7 @@ public class QuickResponseService extends IntentService {
int subscriptionId = recipient.getDefaultSubscriptionId().orElse(-1);
if (!TextUtils.isEmpty(content)) {
MessageSender.send(this, OutgoingMediaMessage.sms(recipient, content, subscriptionId), -1, false, null, null);
MessageSender.send(this, OutgoingMessage.sms(recipient, content, subscriptionId), -1, false, null, null);
}
} catch (URISyntaxException e) {
Toast.makeText(this, R.string.QuickResponseService_problem_sending_message, Toast.LENGTH_LONG).show();

View File

@@ -33,7 +33,7 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.mediasend.Media;
import org.thoughtcrime.securesms.mediasend.v2.text.TextStoryBackgroundColors;
import org.thoughtcrime.securesms.mms.ImageSlide;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.mms.SentMediaQuality;
import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.SlideDeck;
@@ -86,7 +86,7 @@ public final class MultiShareSender {
boolean isMmsEnabled = Util.isMmsCapable(context);
String message = multiShareArgs.getDraftText();
SlideDeck slideDeck;
List<OutgoingMediaMessage> storiesBatch = new LinkedList<>();
List<OutgoingMessage> storiesBatch = new LinkedList<>();
ChatColors generatedTextStoryBackgroundColor = TextStoryBackgroundColors.getRandomBackgroundColor();
try {
@@ -164,7 +164,7 @@ public final class MultiShareSender {
if (!storiesBatch.isEmpty()) {
MessageSender.sendStories(context,
storiesBatch.stream()
.map(OutgoingMediaMessage::makeSecure)
.map(OutgoingMessage::makeSecure)
.collect(Collectors.toList()),
null,
null);
@@ -210,7 +210,7 @@ public final class MultiShareSender {
boolean isStory,
long sentTimestamp,
boolean canSendAsTextStory,
@NonNull List<OutgoingMediaMessage> storiesToBatchSend,
@NonNull List<OutgoingMessage> storiesToBatchSend,
@NonNull ChatColors generatedTextStoryBackgroundColor)
{
String body = multiShareArgs.getDraftText();
@@ -223,7 +223,7 @@ public final class MultiShareSender {
}
}
List<OutgoingMediaMessage> outgoingMessages = new ArrayList<>();
List<OutgoingMessage> outgoingMessages = new ArrayList<>();
if (isStory) {
final StoryType storyType;
@@ -238,19 +238,19 @@ public final class MultiShareSender {
}
if (multiShareArgs.isTextStory()) {
OutgoingMediaMessage outgoingMediaMessage = new OutgoingMediaMessage(recipient,
new SlideDeck(),
body,
sentTimestamp,
subscriptionId,
0L,
false,
storyType.toTextStoryType(),
buildLinkPreviews(context, multiShareArgs.getLinkPreview()),
Collections.emptyList(),
false);
OutgoingMessage outgoingMessage = new OutgoingMessage(recipient,
new SlideDeck(),
body,
sentTimestamp,
subscriptionId,
0L,
false,
storyType.toTextStoryType(),
buildLinkPreviews(context, multiShareArgs.getLinkPreview()),
Collections.emptyList(),
false);
outgoingMessages.add(outgoingMediaMessage);
outgoingMessages.add(outgoingMessage);
} else if (canSendAsTextStory) {
outgoingMessages.add(generateTextStory(context, recipient, multiShareArgs, sentTimestamp, storyType, generatedTextStoryBackgroundColor));
} else {
@@ -272,45 +272,45 @@ public final class MultiShareSender {
SlideDeck singletonDeck = new SlideDeck();
singletonDeck.addSlide(slide);
OutgoingMediaMessage outgoingMediaMessage = new OutgoingMediaMessage(recipient,
singletonDeck,
body,
sentTimestamp,
subscriptionId,
0L,
false,
storyType,
Collections.emptyList(),
validatedMentions,
false);
OutgoingMessage outgoingMessage = new OutgoingMessage(recipient,
singletonDeck,
body,
sentTimestamp,
subscriptionId,
0L,
false,
storyType,
Collections.emptyList(),
validatedMentions,
false);
outgoingMessages.add(outgoingMediaMessage);
outgoingMessages.add(outgoingMessage);
}
}
} else {
OutgoingMediaMessage outgoingMediaMessage = new OutgoingMediaMessage(recipient,
slideDeck,
body,
sentTimestamp,
subscriptionId,
expiresIn,
isViewOnce,
StoryType.NONE,
buildLinkPreviews(context, multiShareArgs.getLinkPreview()),
validatedMentions,
false);
OutgoingMessage outgoingMessage = new OutgoingMessage(recipient,
slideDeck,
body,
sentTimestamp,
subscriptionId,
expiresIn,
isViewOnce,
StoryType.NONE,
buildLinkPreviews(context, multiShareArgs.getLinkPreview()),
validatedMentions,
false);
outgoingMessages.add(outgoingMediaMessage);
outgoingMessages.add(outgoingMessage);
}
if (isStory) {
storiesToBatchSend.addAll(outgoingMessages);
} else if (shouldSendAsPush(recipient, forceSms)) {
for (final OutgoingMediaMessage outgoingMessage : outgoingMessages) {
for (final OutgoingMessage outgoingMessage : outgoingMessages) {
MessageSender.send(context, outgoingMessage.makeSecure(), threadId, false, null, null);
}
} else {
for (final OutgoingMediaMessage outgoingMessage : outgoingMessages) {
for (final OutgoingMessage outgoingMessage : outgoingMessages) {
MessageSender.send(context, outgoingMessage, threadId, forceSms, null, null);
}
}
@@ -386,24 +386,24 @@ public final class MultiShareSender {
{
String body = multiShareArgs.getDraftText() == null ? "" : multiShareArgs.getDraftText();
OutgoingMediaMessage outgoingMessage;
OutgoingMessage outgoingMessage;
if (shouldSendAsPush(recipient, forceSms)) {
outgoingMessage = OutgoingMediaMessage.text(recipient, body, expiresIn, System.currentTimeMillis());
outgoingMessage = OutgoingMessage.text(recipient, body, expiresIn, System.currentTimeMillis());
} else {
outgoingMessage = OutgoingMediaMessage.sms(recipient, body, subscriptionId);
outgoingMessage = OutgoingMessage.sms(recipient, body, subscriptionId);
}
MessageSender.send(context, outgoingMessage, threadId, forceSms, null, null);
}
private static @NonNull OutgoingMediaMessage generateTextStory(@NonNull Context context,
@NonNull Recipient recipient,
@NonNull MultiShareArgs multiShareArgs,
long sentTimestamp,
@NonNull StoryType storyType,
@NonNull ChatColors background)
private static @NonNull OutgoingMessage generateTextStory(@NonNull Context context,
@NonNull Recipient recipient,
@NonNull MultiShareArgs multiShareArgs,
long sentTimestamp,
@NonNull StoryType storyType,
@NonNull ChatColors background)
{
return OutgoingMediaMessage.textStoryMessage(
return OutgoingMessage.textStoryMessage(
recipient,
Base64.encodeBytes(StoryTextPost.newBuilder()
.setBody(getBodyForTextStory(multiShareArgs.getDraftText(), multiShareArgs.getLinkPreview()))

View File

@@ -67,7 +67,7 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.mediasend.Media;
import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.recipients.RecipientUtil;
@@ -107,7 +107,7 @@ public class MessageSender {
}
public static void sendStories(@NonNull final Context context,
@NonNull final List<OutgoingMediaMessage> messages,
@NonNull final List<OutgoingMessage> messages,
@Nullable final String metricId,
@Nullable final MessageTable.InsertListener insertListener)
{
@@ -121,7 +121,7 @@ public class MessageSender {
try {
database.beginTransaction();
for (OutgoingMediaMessage message : messages) {
for (OutgoingMessage message : messages) {
long allocatedThreadId = threadTable.getOrCreateValidThreadId(message.getRecipient(), -1L, message.getDistributionType());
long messageId = database.insertMessageOutbox(message.stripAttachments(), allocatedThreadId, false, insertListener);
@@ -136,9 +136,9 @@ public class MessageSender {
}
for (int i = 0; i < messageIds.size(); i++) {
long messageId = messageIds.get(i);
OutgoingMediaMessage message = messages.get(i);
Recipient recipient = message.getRecipient();
long messageId = messageIds.get(i);
OutgoingMessage message = messages.get(i);
Recipient recipient = message.getRecipient();
if (recipient.isDistributionList()) {
DistributionId distributionId = Objects.requireNonNull(SignalDatabase.distributionLists().getDistributionId(recipient.requireDistributionListId()));
@@ -162,7 +162,7 @@ public class MessageSender {
for (int i = 0; i < messageIds.size(); i++) {
long messageId = messageIds.get(i);
OutgoingMediaMessage message = messages.get(i);
OutgoingMessage message = messages.get(i);
List<UploadDependencyGraph.Node> nodes = dependencyGraph.getDependencyMap().get(message);
if (nodes == null || nodes.isEmpty()) {
@@ -196,9 +196,9 @@ public class MessageSender {
}
for (int i = 0; i < messageIds.size(); i++) {
long messageId = messageIds.get(i);
OutgoingMediaMessage message = messages.get(i);
Recipient recipient = message.getRecipient();
long messageId = messageIds.get(i);
OutgoingMessage message = messages.get(i);
Recipient recipient = message.getRecipient();
List<UploadDependencyGraph.Node> dependencies = dependencyGraph.getDependencyMap().get(message);
List<String> jobDependencyIds = (dependencies != null) ? dependencies.stream().map(UploadDependencyGraph.Node::getJobId).collect(Collectors.toList())
@@ -219,7 +219,7 @@ public class MessageSender {
}
public static long send(final Context context,
final OutgoingMediaMessage message,
final OutgoingMessage message,
final long threadId,
final boolean forceSms,
@Nullable final String metricId,
@@ -252,7 +252,7 @@ public class MessageSender {
}
public static long sendPushWithPreUploadedMedia(final Context context,
final OutgoingMediaMessage message,
final OutgoingMessage message,
final Collection<PreUploadResult> preUploadResults,
final long threadId,
final MessageTable.InsertListener insertListener)
@@ -296,7 +296,7 @@ public class MessageSender {
}
public static void sendMediaBroadcast(@NonNull Context context,
@NonNull List<OutgoingMediaMessage> messages,
@NonNull List<OutgoingMessage> messages,
@NonNull Collection<PreUploadResult> preUploadResults,
boolean overwritePreUploadMessageIds)
{
@@ -304,15 +304,15 @@ public class MessageSender {
Preconditions.checkArgument(messages.size() > 0, "No messages!");
Preconditions.checkArgument(Stream.of(messages).allMatch(m -> m.getAttachments().isEmpty()), "Messages can't have attachments! They should be pre-uploaded.");
JobManager jobManager = ApplicationDependencies.getJobManager();
AttachmentTable attachmentDatabase = SignalDatabase.attachments();
MessageTable mmsDatabase = SignalDatabase.mms();
ThreadTable threadTable = SignalDatabase.threads();
List<AttachmentId> preUploadAttachmentIds = Stream.of(preUploadResults).map(PreUploadResult::getAttachmentId).toList();
List<String> preUploadJobIds = Stream.of(preUploadResults).map(PreUploadResult::getJobIds).flatMap(Stream::of).toList();
List<Long> messageIds = new ArrayList<>(messages.size());
List<String> messageDependsOnIds = new ArrayList<>(preUploadJobIds);
OutgoingMediaMessage primaryMessage = messages.get(0);
JobManager jobManager = ApplicationDependencies.getJobManager();
AttachmentTable attachmentDatabase = SignalDatabase.attachments();
MessageTable mmsDatabase = SignalDatabase.mms();
ThreadTable threadTable = SignalDatabase.threads();
List<AttachmentId> preUploadAttachmentIds = Stream.of(preUploadResults).map(PreUploadResult::getAttachmentId).toList();
List<String> preUploadJobIds = Stream.of(preUploadResults).map(PreUploadResult::getJobIds).flatMap(Stream::of).toList();
List<Long> messageIds = new ArrayList<>(messages.size());
List<String> messageDependsOnIds = new ArrayList<>(preUploadJobIds);
OutgoingMessage primaryMessage = messages.get(0);
mmsDatabase.beginTransaction();
try {
@@ -337,14 +337,14 @@ public class MessageSender {
.toList();
if (messages.size() > 0) {
List<OutgoingMediaMessage> secondaryMessages = overwritePreUploadMessageIds ? messages.subList(1, messages.size()) : messages;
List<List<AttachmentId>> attachmentCopies = new ArrayList<>();
List<OutgoingMessage> secondaryMessages = overwritePreUploadMessageIds ? messages.subList(1, messages.size()) : messages;
List<List<AttachmentId>> attachmentCopies = new ArrayList<>();
for (int i = 0; i < preUploadAttachmentIds.size(); i++) {
attachmentCopies.add(new ArrayList<>(messages.size()));
}
for (OutgoingMediaMessage secondaryMessage : secondaryMessages) {
for (OutgoingMessage secondaryMessage : secondaryMessages) {
long allocatedThreadId = threadTable.getOrCreateThreadIdFor(secondaryMessage.getRecipient(), secondaryMessage.getDistributionType());
long messageId = mmsDatabase.insertMessageOutbox(applyUniversalExpireTimerIfNecessary(context, secondaryMessage.getRecipient(), secondaryMessage, allocatedThreadId),
allocatedThreadId,
@@ -376,9 +376,9 @@ public class MessageSender {
}
for (int i = 0; i < messageIds.size(); i++) {
long messageId = messageIds.get(i);
OutgoingMediaMessage message = messages.get(i);
Recipient recipient = message.getRecipient();
long messageId = messageIds.get(i);
OutgoingMessage message = messages.get(i);
Recipient recipient = message.getRecipient();
if (recipient.isDistributionList()) {
List<RecipientId> members = SignalDatabase.distributionLists().getMembers(recipient.requireDistributionListId());
@@ -507,11 +507,11 @@ public class MessageSender {
EventBus.getDefault().postSticky(MessageSentEvent.INSTANCE);
}
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 outgoingMediaMessage.withExpiry(TimeUnit.SECONDS.toMillis(SignalStore.settings().getUniversalExpireTimer()));
private static @NonNull OutgoingMessage applyUniversalExpireTimerIfNecessary(@NonNull Context context, @NonNull Recipient recipient, @NonNull OutgoingMessage outgoingMessage, long threadId) {
if (!outgoingMessage.isExpirationUpdate() && outgoingMessage.getExpiresIn() == 0 && RecipientUtil.setAndSendUniversalExpireTimerIfNecessary(context, recipient, threadId)) {
return outgoingMessage.withExpiry(TimeUnit.SECONDS.toMillis(SignalStore.settings().getUniversalExpireTimer()));
}
return outgoingMediaMessage;
return outgoingMessage;
}
private static void sendMediaMessage(Context context, Recipient recipient, boolean forceSms, long messageId, @NonNull Collection<String> uploadJobIds)
@@ -624,9 +624,9 @@ public class MessageSender {
try {
ExpiringMessageManager expirationManager = ApplicationDependencies.getExpiringMessageManager();
MessageTable mmsDatabase = SignalDatabase.mms();
MmsSmsTable mmsSmsDatabase = SignalDatabase.mmsSms();
OutgoingMediaMessage message = mmsDatabase.getOutgoingMessage(messageId);
SyncMessageId syncId = new SyncMessageId(Recipient.self().getId(), message.getSentTimeMillis());
MmsSmsTable mmsSmsDatabase = SignalDatabase.mmsSms();
OutgoingMessage message = mmsDatabase.getOutgoingMessage(messageId);
SyncMessageId syncId = new SyncMessageId(Recipient.self().getId(), message.getSentTimeMillis());
List<Attachment> attachments = new LinkedList<>();

View File

@@ -12,7 +12,7 @@ import org.thoughtcrime.securesms.jobs.AttachmentCompressionJob
import org.thoughtcrime.securesms.jobs.AttachmentCopyJob
import org.thoughtcrime.securesms.jobs.AttachmentUploadJob
import org.thoughtcrime.securesms.jobs.ResumableUploadSpecJob
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
/**
* Helper alias for working with JobIds.
@@ -27,7 +27,7 @@ private typealias JobId = String
* @param deferredJobQueue A list of job chains that can be executed on the job manager when ready (outside of a database transaction).
*/
class UploadDependencyGraph private constructor(
val dependencyMap: Map<OutgoingMediaMessage, List<Node>>,
val dependencyMap: Map<OutgoingMessage, List<Node>>,
private val deferredJobQueue: List<JobManager.Chain>
) {
@@ -100,7 +100,7 @@ class UploadDependencyGraph private constructor(
@JvmStatic
@WorkerThread
fun create(
messages: List<OutgoingMediaMessage>,
messages: List<OutgoingMessage>,
jobManager: JobManager,
insertAttachmentForPreUpload: (Attachment) -> DatabaseAttachment
): UploadDependencyGraph {
@@ -111,8 +111,8 @@ class UploadDependencyGraph private constructor(
* Produce a mapping of AttachmentKey{DatabaseAttachment,TransformProperties} -> Set<OutgoingMediaMessage>
* This map represents which messages require a specific attachment.
*/
private fun buildAttachmentMap(messages: List<OutgoingMediaMessage>, insertAttachmentForPreUpload: (Attachment) -> DatabaseAttachment): Map<AttachmentKey<DatabaseAttachment>, Set<OutgoingMediaMessage>> {
val attachmentMap = mutableMapOf<AttachmentKey<DatabaseAttachment>, Set<OutgoingMediaMessage>>()
private fun buildAttachmentMap(messages: List<OutgoingMessage>, insertAttachmentForPreUpload: (Attachment) -> DatabaseAttachment): Map<AttachmentKey<DatabaseAttachment>, Set<OutgoingMessage>> {
val attachmentMap = mutableMapOf<AttachmentKey<DatabaseAttachment>, Set<OutgoingMessage>>()
val preUploadCache = mutableMapOf<AttachmentKey<UriAttachment>, DatabaseAttachment>()
for (message in messages) {
@@ -125,12 +125,12 @@ class UploadDependencyGraph private constructor(
for (attachmentKey in uniqueAttachments) {
when (val attachment = attachmentKey.attachment) {
is DatabaseAttachment -> {
val messageIdList: Set<OutgoingMediaMessage> = attachmentMap.getOrDefault(attachment.asDatabaseAttachmentKey(), emptySet())
val messageIdList: Set<OutgoingMessage> = attachmentMap.getOrDefault(attachment.asDatabaseAttachmentKey(), emptySet())
attachmentMap[attachment.asDatabaseAttachmentKey()] = messageIdList + message
}
is UriAttachment -> {
val dbAttachmentKey: AttachmentKey<DatabaseAttachment> = preUploadCache.getOrPut(attachment.asUriAttachmentKey()) { insertAttachmentForPreUpload(attachment) }.asDatabaseAttachmentKey()
val messageIdList: Set<OutgoingMediaMessage> = attachmentMap.getOrDefault(dbAttachmentKey, emptySet())
val messageIdList: Set<OutgoingMessage> = attachmentMap.getOrDefault(dbAttachmentKey, emptySet())
attachmentMap[dbAttachmentKey] = messageIdList + message
}
else -> {
@@ -148,7 +148,7 @@ class UploadDependencyGraph private constructor(
* Each attachment will be uploaded exactly once and copied N times, where N is the number of messages in its set, minus 1 (the upload)
* The resulting object contains a list of jobs that a subsequent send job can depend on, as well as a list of Chains which can be
* enqueued to perform uploading. Since a send job can depend on multiple chains, it's cleaner to give back a mapping of
* [OutgoingMediaMessage] -> [List<Node>] instead of forcing the caller to try to weave new jobs into the original chains.
* [OutgoingMessage] -> [List<Node>] instead of forcing the caller to try to weave new jobs into the original chains.
*
* Each chain consists of:
* 1. Compression job
@@ -157,23 +157,23 @@ class UploadDependencyGraph private constructor(
* 1. O to 1 copy jobs
*/
private fun buildDependencyGraph(
attachmentIdToOutgoingMessagesMap: Map<AttachmentKey<DatabaseAttachment>, Set<OutgoingMediaMessage>>,
attachmentIdToOutgoingMessagesMap: Map<AttachmentKey<DatabaseAttachment>, Set<OutgoingMessage>>,
jobManager: JobManager,
insertAttachmentForPreUpload: (Attachment) -> DatabaseAttachment
): UploadDependencyGraph {
val resultMap = mutableMapOf<OutgoingMediaMessage, List<Node>>()
val resultMap = mutableMapOf<OutgoingMessage, List<Node>>()
val jobQueue = mutableListOf<JobManager.Chain>()
for ((attachmentKey, messages) in attachmentIdToOutgoingMessagesMap) {
val (uploadJobId, uploadChain) = createAttachmentUploadChain(jobManager, attachmentKey.attachment)
val uploadMessage: OutgoingMediaMessage = messages.first()
val copyMessages: List<OutgoingMediaMessage> = messages.drop(1)
val uploadMessage: OutgoingMessage = messages.first()
val copyMessages: List<OutgoingMessage> = messages.drop(1)
val uploadMessageDependencies: List<Node> = resultMap.getOrDefault(uploadMessage, emptyList())
resultMap[uploadMessage] = uploadMessageDependencies + Node(uploadJobId, attachmentKey.attachment.attachmentId)
if (copyMessages.isNotEmpty()) {
val copyAttachments: Map<OutgoingMediaMessage, AttachmentId> = copyMessages.associateWith { insertAttachmentForPreUpload(attachmentKey.attachment).attachmentId }
val copyAttachments: Map<OutgoingMessage, AttachmentId> = copyMessages.associateWith { insertAttachmentForPreUpload(attachmentKey.attachment).attachmentId }
val copyJob = AttachmentCopyJob(attachmentKey.attachment.attachmentId, copyAttachments.values.toList())
copyAttachments.forEach { (message, attachmentId) ->

View File

@@ -25,7 +25,7 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.mediasend.Media
import org.thoughtcrime.securesms.mediasend.v2.stories.ChooseStoryTypeBottomSheet
import org.thoughtcrime.securesms.mms.MediaConstraints
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.mms.SentMediaQuality
import org.thoughtcrime.securesms.mms.VideoSlide
import org.thoughtcrime.securesms.recipients.Recipient
@@ -81,7 +81,7 @@ object Stories {
}
}
fun sendTextStories(messages: List<OutgoingMediaMessage>): Completable {
fun sendTextStories(messages: List<OutgoingMessage>): Completable {
return Completable.create { emitter ->
MessageSender.sendStories(ApplicationDependencies.getApplication(), messages, null, null)
emitter.onComplete()

View File

@@ -19,7 +19,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.mediasend.MediaSendActivityResult
import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionActivity
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.sharing.MultiShareArgs
@@ -102,7 +102,7 @@ class AddToGroupStoryDelegate(
Log.d(TAG, "Sending preupload media.")
val recipient = Recipient.resolved(result.recipientId)
val secureMessage = OutgoingMediaMessage(
val secureMessage = OutgoingMessage(
recipient = recipient,
timestamp = System.currentTimeMillis(),
storyType = result.storyType,

View File

@@ -9,7 +9,7 @@ import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord
import org.thoughtcrime.securesms.database.model.MessageRecord
import org.thoughtcrime.securesms.database.model.ParentStoryId
import org.thoughtcrime.securesms.database.model.StoryType
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.mms.QuoteModel
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
@@ -43,7 +43,7 @@ class StoryDirectReplyRepository(context: Context) {
MessageSender.send(
context,
OutgoingMediaMessage(
OutgoingMessage(
recipient,
charSequence.toString(),
emptyList(),

View File

@@ -11,7 +11,7 @@ import org.thoughtcrime.securesms.database.model.Mention
import org.thoughtcrime.securesms.database.model.ParentStoryId
import org.thoughtcrime.securesms.database.model.StoryType
import org.thoughtcrime.securesms.mediasend.v2.UntrustedRecords
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.sms.MessageSender
/**
@@ -41,7 +41,7 @@ object StoryGroupReplySender {
Completable.create {
MessageSender.send(
context,
OutgoingMediaMessage(
OutgoingMessage(
recipient = recipient,
body = body.toString(),
timestamp = System.currentTimeMillis(),

View File

@@ -24,7 +24,7 @@ import org.thoughtcrime.securesms.database.model.IdentityRecord;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingMessage;
import org.thoughtcrime.securesms.notifications.v2.ConversationId;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
@@ -84,11 +84,11 @@ public final class IdentityUtil {
Recipient groupRecipient = Recipient.resolved(recipientId);
long threadId = SignalDatabase.threads().getOrCreateThreadIdFor(groupRecipient);
OutgoingMediaMessage outgoing;
OutgoingMessage outgoing;
if (verified) {
outgoing = OutgoingMediaMessage.identityVerifiedMessage(recipient, time);
outgoing = OutgoingMessage.identityVerifiedMessage(recipient, time);
} else {
outgoing = OutgoingMediaMessage.identityDefaultMessage(recipient, time);
outgoing = OutgoingMessage.identityDefaultMessage(recipient, time);
}
try {
@@ -110,11 +110,11 @@ public final class IdentityUtil {
smsDatabase.insertMessageInbox(incoming);
} else {
OutgoingMediaMessage outgoing;
OutgoingMessage outgoing;
if (verified) {
outgoing = OutgoingMediaMessage.identityVerifiedMessage(recipient, time);
outgoing = OutgoingMessage.identityVerifiedMessage(recipient, time);
} else {
outgoing = OutgoingMediaMessage.identityDefaultMessage(recipient, time);
outgoing = OutgoingMessage.identityDefaultMessage(recipient, time);
}
long threadId = SignalDatabase.threads().getOrCreateThreadIdFor(recipient);