diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/ConversationItemPreviewer.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/ConversationItemPreviewer.kt index 90db4b9969..9077a63c82 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/ConversationItemPreviewer.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/ConversationItemPreviewer.kt @@ -10,7 +10,7 @@ import org.signal.core.util.ThreadUtil import org.thoughtcrime.securesms.attachments.PointerAttachment import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.mms.IncomingMediaMessage -import org.thoughtcrime.securesms.mms.OutgoingMediaMessage +import org.thoughtcrime.securesms.mms.OutgoingMessage import org.thoughtcrime.securesms.profiles.ProfileName import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.releasechannel.ReleaseChannel @@ -109,7 +109,7 @@ class ConversationItemPreviewer { attachment() } - val message = OutgoingMediaMessage( + val message = OutgoingMessage( recipient = other, body = body, attachments = PointerAttachment.forPointers(Optional.of(attachments)), diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsHelper.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsHelper.kt index 9bea0abd8a..3dab8ff075 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsHelper.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsHelper.kt @@ -4,7 +4,7 @@ import org.thoughtcrime.securesms.database.model.ParentStoryId import org.thoughtcrime.securesms.database.model.StoryType import org.thoughtcrime.securesms.database.model.databaseprotos.GiftBadge import org.thoughtcrime.securesms.mms.IncomingMediaMessage -import org.thoughtcrime.securesms.mms.OutgoingMediaMessage +import org.thoughtcrime.securesms.mms.OutgoingMessage import org.thoughtcrime.securesms.recipients.Recipient import java.util.Optional @@ -28,7 +28,7 @@ object MmsHelper { giftBadge: GiftBadge? = null, secure: Boolean = true ): Long { - val message = OutgoingMediaMessage( + val message = OutgoingMessage( recipient = recipient, body = body, timestamp = sentTimeMillis, @@ -50,7 +50,7 @@ object MmsHelper { } fun insert( - message: OutgoingMediaMessage, + message: OutgoingMessage, threadId: Long ): Long { return SignalDatabase.mms.insertMessageOutbox(message, threadId, false, GroupReceiptTable.STATUS_UNKNOWN, null) diff --git a/app/src/main/java/org/thoughtcrime/securesms/InviteActivity.java b/app/src/main/java/org/thoughtcrime/securesms/InviteActivity.java index 28c0907082..4dfe003222 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/InviteActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/InviteActivity.java @@ -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()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/Gifts.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/Gifts.kt index ed7afed5e9..6d300258fc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/Gifts.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/Gifts.kt @@ -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, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsRepository.kt index c0de6e348f..97146e8091 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsRepository.kt @@ -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)) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt index a5075cd281..2226069261 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt @@ -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 diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index e4d3fe8c9e..0795f30f8c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -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) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java index f3a23640c2..599765bf99 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java @@ -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 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 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 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) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.java b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.java index 5a17bfa417..03e51b0148 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.java @@ -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(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV1.java b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV1.java index 1203b59bff..f9e12204d2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV1.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV1.java @@ -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 createGroupLeaveMessage(@NonNull Context context, - @NonNull GroupId.V1 groupId, - @NonNull Recipient groupRecipient) + private static Optional createGroupLeaveMessage(@NonNull Context context, + @NonNull GroupId.V1 groupId, + @NonNull Recipient groupRecipient) { GroupTable groupDatabase = SignalDatabase.groups(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java index 2791bfc15d..9455e4e162 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java @@ -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(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java index 94f7966522..52e3a85935 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java @@ -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); diff --git a/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsRepository.java b/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsRepository.java index a63a6f30d7..6a0b60346c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsRepository.java @@ -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()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsSendJob.java index 6ba4fce0bd..40b32d2ff2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsSendJob.java @@ -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(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentNotificationSendJobV2.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentNotificationSendJobV2.kt index 47ed624504..f758a89a77 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentNotificationSendJobV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PaymentNotificationSendJobV2.kt @@ -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(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java index 40de83b9d3..da585b6d51 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDistributionListSendJob.java @@ -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 existingNetworkFailures = new HashSet<>(message.getNetworkFailures()); Set existingIdentityMismatches = new HashSet<>(message.getIdentityKeyMismatches()); @@ -190,7 +190,7 @@ public final class PushDistributionListSendJob extends PushSendJob { SignalDatabase.mms().markAsSentFailed(messageId); } - private List deliver(@NonNull OutgoingMediaMessage message, @NonNull List destinations) + private List deliver(@NonNull OutgoingMessage message, @NonNull List destinations) throws IOException, UntrustedIdentityException, UndeliverableMessageException { try { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java index 17ae19313d..ee7e9dccd5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java @@ -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 attachmentUploadIds = enqueueCompressingAndUploadAttachmentsChains(jobManager, message); + MessageTable database = SignalDatabase.mms(); + OutgoingMessage message = database.getOutgoingMessage(messageId); + Set 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 existingNetworkFailures = new HashSet<>(message.getNetworkFailures()); Set existingIdentityMismatches = new HashSet<>(message.getIdentityKeyMismatches()); @@ -234,7 +234,7 @@ public final class PushGroupSendJob extends PushSendJob { SignalDatabase.mms().markAsSentFailed(messageId); } - private List deliver(OutgoingMediaMessage message, @NonNull Recipient groupRecipient, @NonNull List destinations) + private List deliver(OutgoingMessage message, @NonNull Recipient groupRecipient, @NonNull List 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 results, @NonNull List target, @NonNull List skipped, diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java index 33ac547304..7c23dc0817 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java @@ -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 memberUuids = DecryptedGroupUtil.toUuidList(decryptedGroup.getMembersList()); List pendingUuids = DecryptedGroupUtil.pendingToUuidList(decryptedGroup.getPendingMembersList()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java index 458bc754ee..7e9128e6a2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java @@ -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 attachmentUploadIds = enqueueCompressingAndUploadAttachmentsChains(jobManager, message); + MessageTable database = SignalDatabase.mms(); + OutgoingMessage message = database.getOutgoingMessage(messageId); + Set 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); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java index 167df0923c..d8ada07b4a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java @@ -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 enqueueCompressingAndUploadAttachmentsChains(@NonNull JobManager jobManager, OutgoingMediaMessage message) { + protected static Set enqueueCompressingAndUploadAttachmentsChains(@NonNull JobManager jobManager, OutgoingMessage message) { List attachments = new LinkedList<>(); attachments.addAll(message.getAttachments()); @@ -301,7 +299,7 @@ public abstract class PushSendJob extends SendJob { } } - protected Optional getQuoteFor(OutgoingMediaMessage message) throws IOException { + protected Optional 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 getStickerFor(OutgoingMediaMessage message) { + protected Optional 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 getStoryReactionFor(@NonNull OutgoingMediaMessage message, @NonNull SignalServiceDataMessage.StoryContext storyContext) { + protected Optional 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 getSharedContactsFor(OutgoingMediaMessage mediaMessage) { + List getSharedContactsFor(OutgoingMessage mediaMessage) { List sharedContacts = new LinkedList<>(); for (Contact contact : mediaMessage.getSharedContacts()) { @@ -417,7 +415,7 @@ public abstract class PushSendJob extends SendJob { return sharedContacts; } - List getPreviewsFor(OutgoingMediaMessage mediaMessage) { + List 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; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendJob.java index 710e945eb7..8214328b0d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendJob.java @@ -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 attachments = new LinkedList<>(); attachments.addAll(message.getAttachments()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendPaymentsActivatedJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendPaymentsActivatedJob.kt index cc8bfb3189..74ebfc99ff 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendPaymentsActivatedJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendPaymentsActivatedJob.kt @@ -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, diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt index 3e8e50b18b..dc7e04b3e5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt @@ -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 ) { - val nonStoryMessages: MutableList = ArrayList(contacts.size) - val storyPreUploadMessages: MutableMap> = mutableMapOf() - val storyClipMessages: MutableList = ArrayList() + val nonStoryMessages: MutableList = ArrayList(contacts.size) + val storyPreUploadMessages: MutableMap> = mutableMapOf() + val storyClipMessages: MutableList = ArrayList() val distributionListPreUploadSentTimestamps: MutableMap = mutableMapOf() val distributionListStoryClipsSentTimestamps: MutableMap = 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)), diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt index 956c9f3413..436dbe9548 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/send/TextStoryPostSendRepository.kt @@ -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, textStoryPostCreationState: TextStoryPostCreationState, linkPreview: LinkPreview?): Single { return Single.fromCallable { - val messages: MutableList = mutableListOf() + val messages: MutableList = 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(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java index 11316c05eb..77a0541759 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java @@ -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(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/StorySendUtil.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/StorySendUtil.kt index 42223135f6..2cbef95479 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/StorySendUtil.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/StorySendUtil.kt @@ -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): SignalServiceTextAttachment { + fun deserializeBodyToStoryTextAttachment(message: OutgoingMessage, getPreviewsFor: (OutgoingMessage) -> List): SignalServiceTextAttachment { val storyTextPost = StoryTextPost.parseFrom(Base64.decode(message.body)) val preview = if (message.linkPreviews.isEmpty()) { Optional.empty() diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java b/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java index 4737ea117d..83421f0185 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java @@ -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) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingMediaMessage.kt b/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingMessage.kt similarity index 90% rename from app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingMediaMessage.kt rename to app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingMessage.kt index 7b9334dfd4..cbfd25c57b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingMediaMessage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/OutgoingMessage.kt @@ -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 = emptyList(), previews: List = emptyList(), mentions: List = 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 - ): 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, diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java index d2f6207a68..d6ffe9c12a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java @@ -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; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java index 6e1e7a78c1..0198ccebd2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java @@ -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; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/QuickResponseService.java b/app/src/main/java/org/thoughtcrime/securesms/service/QuickResponseService.java index 3ff782e218..b651133349 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/QuickResponseService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/QuickResponseService.java @@ -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(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java index 56665ec0d2..66bc6e7bf9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java @@ -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 storiesBatch = new LinkedList<>(); + List 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 storiesToBatchSend, + @NonNull List storiesToBatchSend, @NonNull ChatColors generatedTextStoryBackgroundColor) { String body = multiShareArgs.getDraftText(); @@ -223,7 +223,7 @@ public final class MultiShareSender { } } - List outgoingMessages = new ArrayList<>(); + List 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())) diff --git a/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java b/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java index 916c3c5cae..0afd860245 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java @@ -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 messages, + @NonNull final List 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 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 dependencies = dependencyGraph.getDependencyMap().get(message); List 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 preUploadResults, final long threadId, final MessageTable.InsertListener insertListener) @@ -296,7 +296,7 @@ public class MessageSender { } public static void sendMediaBroadcast(@NonNull Context context, - @NonNull List messages, + @NonNull List messages, @NonNull Collection 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 preUploadAttachmentIds = Stream.of(preUploadResults).map(PreUploadResult::getAttachmentId).toList(); - List preUploadJobIds = Stream.of(preUploadResults).map(PreUploadResult::getJobIds).flatMap(Stream::of).toList(); - List messageIds = new ArrayList<>(messages.size()); - List 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 preUploadAttachmentIds = Stream.of(preUploadResults).map(PreUploadResult::getAttachmentId).toList(); + List preUploadJobIds = Stream.of(preUploadResults).map(PreUploadResult::getJobIds).flatMap(Stream::of).toList(); + List messageIds = new ArrayList<>(messages.size()); + List 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 secondaryMessages = overwritePreUploadMessageIds ? messages.subList(1, messages.size()) : messages; - List> attachmentCopies = new ArrayList<>(); + List secondaryMessages = overwritePreUploadMessageIds ? messages.subList(1, messages.size()) : messages; + List> 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 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 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 attachments = new LinkedList<>(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/sms/UploadDependencyGraph.kt b/app/src/main/java/org/thoughtcrime/securesms/sms/UploadDependencyGraph.kt index 921513b296..04f6ab202b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sms/UploadDependencyGraph.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/sms/UploadDependencyGraph.kt @@ -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>, + val dependencyMap: Map>, private val deferredJobQueue: List ) { @@ -100,7 +100,7 @@ class UploadDependencyGraph private constructor( @JvmStatic @WorkerThread fun create( - messages: List, + messages: List, jobManager: JobManager, insertAttachmentForPreUpload: (Attachment) -> DatabaseAttachment ): UploadDependencyGraph { @@ -111,8 +111,8 @@ class UploadDependencyGraph private constructor( * Produce a mapping of AttachmentKey{DatabaseAttachment,TransformProperties} -> Set * This map represents which messages require a specific attachment. */ - private fun buildAttachmentMap(messages: List, insertAttachmentForPreUpload: (Attachment) -> DatabaseAttachment): Map, Set> { - val attachmentMap = mutableMapOf, Set>() + private fun buildAttachmentMap(messages: List, insertAttachmentForPreUpload: (Attachment) -> DatabaseAttachment): Map, Set> { + val attachmentMap = mutableMapOf, Set>() val preUploadCache = mutableMapOf, 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 = attachmentMap.getOrDefault(attachment.asDatabaseAttachmentKey(), emptySet()) + val messageIdList: Set = attachmentMap.getOrDefault(attachment.asDatabaseAttachmentKey(), emptySet()) attachmentMap[attachment.asDatabaseAttachmentKey()] = messageIdList + message } is UriAttachment -> { val dbAttachmentKey: AttachmentKey = preUploadCache.getOrPut(attachment.asUriAttachmentKey()) { insertAttachmentForPreUpload(attachment) }.asDatabaseAttachmentKey() - val messageIdList: Set = attachmentMap.getOrDefault(dbAttachmentKey, emptySet()) + val messageIdList: Set = 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] instead of forcing the caller to try to weave new jobs into the original chains. + * [OutgoingMessage] -> [List] 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, Set>, + attachmentIdToOutgoingMessagesMap: Map, Set>, jobManager: JobManager, insertAttachmentForPreUpload: (Attachment) -> DatabaseAttachment ): UploadDependencyGraph { - val resultMap = mutableMapOf>() + val resultMap = mutableMapOf>() val jobQueue = mutableListOf() for ((attachmentKey, messages) in attachmentIdToOutgoingMessagesMap) { val (uploadJobId, uploadChain) = createAttachmentUploadChain(jobManager, attachmentKey.attachment) - val uploadMessage: OutgoingMediaMessage = messages.first() - val copyMessages: List = messages.drop(1) + val uploadMessage: OutgoingMessage = messages.first() + val copyMessages: List = messages.drop(1) val uploadMessageDependencies: List = resultMap.getOrDefault(uploadMessage, emptyList()) resultMap[uploadMessage] = uploadMessageDependencies + Node(uploadJobId, attachmentKey.attachment.attachmentId) if (copyMessages.isNotEmpty()) { - val copyAttachments: Map = copyMessages.associateWith { insertAttachmentForPreUpload(attachmentKey.attachment).attachmentId } + val copyAttachments: Map = copyMessages.associateWith { insertAttachmentForPreUpload(attachmentKey.attachment).attachmentId } val copyJob = AttachmentCopyJob(attachmentKey.attachment.attachmentId, copyAttachments.values.toList()) copyAttachments.forEach { (message, attachmentId) -> diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt index f68b0cbf79..6a8fadf361 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/Stories.kt @@ -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): Completable { + fun sendTextStories(messages: List): Completable { return Completable.create { emitter -> MessageSender.sendStories(ApplicationDependencies.getApplication(), messages, null, null) emitter.onComplete() diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/AddToGroupStoryDelegate.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/AddToGroupStoryDelegate.kt index d3c0a5ef2d..a529405159 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/AddToGroupStoryDelegate.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/AddToGroupStoryDelegate.kt @@ -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, diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyRepository.kt index 801f627621..5864f3d57d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyRepository.kt @@ -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(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplySender.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplySender.kt index 355aae1524..170a167dd2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplySender.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplySender.kt @@ -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(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java index 5c160a02c4..ea00520bed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java @@ -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); diff --git a/app/src/test/java/org/thoughtcrime/securesms/database/TestMms.kt b/app/src/test/java/org/thoughtcrime/securesms/database/TestMms.kt index ffec7bda78..d8f0e18a6e 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/database/TestMms.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/database/TestMms.kt @@ -4,7 +4,7 @@ import android.content.ContentValues import android.database.sqlite.SQLiteDatabase import com.google.android.mms.pdu_alt.PduHeaders import org.thoughtcrime.securesms.database.model.StoryType -import org.thoughtcrime.securesms.mms.OutgoingMediaMessage +import org.thoughtcrime.securesms.mms.OutgoingMessage import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId @@ -30,7 +30,7 @@ object TestMms { threadId: Long = 1, storyType: StoryType = StoryType.NONE ): Long { - val message = OutgoingMediaMessage( + val message = OutgoingMessage( recipient, body, emptyList(), @@ -66,7 +66,7 @@ object TestMms { fun insert( db: SQLiteDatabase, - message: OutgoingMediaMessage, + message: OutgoingMessage, recipientId: RecipientId = message.recipient.id, body: String = message.body, type: Long = MmsSmsColumns.Types.BASE_INBOX_TYPE, diff --git a/app/src/test/java/org/thoughtcrime/securesms/sms/UploadDependencyGraphTest.kt b/app/src/test/java/org/thoughtcrime/securesms/sms/UploadDependencyGraphTest.kt index 2dba9c9fc8..08b006736a 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/sms/UploadDependencyGraphTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/sms/UploadDependencyGraphTest.kt @@ -21,7 +21,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 import org.thoughtcrime.securesms.mms.SentMediaQuality import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.testutil.UriAttachmentBuilder @@ -166,8 +166,8 @@ class UploadDependencyGraphTest { // GIVEN val attachment1 = UriAttachmentBuilder.build(uniqueLong.getAndIncrement(), contentType = MediaUtil.IMAGE_JPEG) val attachment2 = UriAttachmentBuilder.build(uniqueLong.getAndIncrement(), contentType = MediaUtil.IMAGE_JPEG) - val message1 = OutgoingMediaMessage(recipient = Recipient.UNKNOWN, sentTimeMillis = System.currentTimeMillis(), attachments = listOf(attachment1)) - val message2 = OutgoingMediaMessage(recipient = Recipient.UNKNOWN, sentTimeMillis = System.currentTimeMillis() + 1, attachments = listOf(attachment2)) + val message1 = OutgoingMessage(recipient = Recipient.UNKNOWN, sentTimeMillis = System.currentTimeMillis(), attachments = listOf(attachment1)) + val message2 = OutgoingMessage(recipient = Recipient.UNKNOWN, sentTimeMillis = System.currentTimeMillis() + 1, attachments = listOf(attachment2)) val testSubject = UploadDependencyGraph.create(listOf(message1, message2), jobManager) { getAttachmentForPreUpload(uniqueLong.getAndIncrement(), it) } // WHEN @@ -190,7 +190,7 @@ class UploadDependencyGraphTest { ) } - val message = OutgoingMediaMessage(recipient = Recipient.UNKNOWN, sentTimeMillis = System.currentTimeMillis(), attachments = uriAttachments) + val message = OutgoingMessage(recipient = Recipient.UNKNOWN, sentTimeMillis = System.currentTimeMillis(), attachments = uriAttachments) val testSubject = UploadDependencyGraph.create(listOf(message), jobManager) { getAttachmentForPreUpload(uniqueLong.getAndIncrement(), it) } val result = testSubject.consumeDeferredQueue() @@ -258,9 +258,9 @@ class UploadDependencyGraphTest { ) } - private fun Iterable.createMessages(uriAttachments: List): List { + private fun Iterable.createMessages(uriAttachments: List): List { return mapIndexed { index, _ -> - OutgoingMediaMessage( + OutgoingMessage( recipient = Recipient.UNKNOWN, sentTimeMillis = System.currentTimeMillis() + index, attachments = uriAttachments,