Fix bug when sending to a single contact and single dlist at the same time.
This commit is contained in:
parent
36c882e318
commit
d2c2952ccf
2 changed files with 22 additions and 18 deletions
|
@ -342,14 +342,15 @@ class MediaSelectionRepository(context: Context) {
|
|||
MessageSender.sendMediaBroadcast(
|
||||
context,
|
||||
nonStoryMessages,
|
||||
preUploadResults
|
||||
preUploadResults,
|
||||
true
|
||||
)
|
||||
}
|
||||
|
||||
if (storyPreUploadMessages.isNotEmpty()) {
|
||||
Log.d(TAG, "Sending ${storyPreUploadMessages.size} preload messages to stories")
|
||||
storyPreUploadMessages.forEach { (preUploadResult, messages) ->
|
||||
MessageSender.sendMediaBroadcast(context, messages, Collections.singleton(preUploadResult))
|
||||
MessageSender.sendMediaBroadcast(context, messages, Collections.singleton(preUploadResult), nonStoryMessages.isEmpty())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -329,9 +329,10 @@ public class MessageSender {
|
|||
|
||||
public static void sendMediaBroadcast(@NonNull Context context,
|
||||
@NonNull List<OutgoingSecureMediaMessage> messages,
|
||||
@NonNull Collection<PreUploadResult> preUploadResults)
|
||||
@NonNull Collection<PreUploadResult> preUploadResults,
|
||||
boolean overwritePreUploadMessageIds)
|
||||
{
|
||||
Log.i(TAG, "Sending media broadcast to " + Stream.of(messages).map(m -> m.getRecipient().getId()).toList());
|
||||
Log.i(TAG, "Sending media broadcast (overwrite: " + overwritePreUploadMessageIds + ") to " + Stream.of(messages).map(m -> m.getRecipient().getId()).toList());
|
||||
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.");
|
||||
|
||||
|
@ -343,10 +344,11 @@ public class MessageSender {
|
|||
List<String> preUploadJobIds = Stream.of(preUploadResults).map(PreUploadResult::getJobIds).flatMap(Stream::of).toList();
|
||||
List<Long> messageIds = new ArrayList<>(messages.size());
|
||||
List<String> messageDependsOnIds = new ArrayList<>(preUploadJobIds);
|
||||
OutgoingSecureMediaMessage primaryMessage = messages.get(0);
|
||||
|
||||
mmsDatabase.beginTransaction();
|
||||
try {
|
||||
OutgoingSecureMediaMessage primaryMessage = messages.get(0);
|
||||
if (overwritePreUploadMessageIds) {
|
||||
long primaryThreadId = threadDatabase.getOrCreateThreadIdFor(primaryMessage.getRecipient(), primaryMessage.getDistributionType());
|
||||
long primaryMessageId = mmsDatabase.insertMessageOutbox(applyUniversalExpireTimerIfNecessary(context, primaryMessage.getRecipient(), primaryMessage, primaryThreadId),
|
||||
primaryThreadId,
|
||||
|
@ -360,13 +362,14 @@ public class MessageSender {
|
|||
}
|
||||
}
|
||||
messageIds.add(primaryMessageId);
|
||||
}
|
||||
|
||||
List<DatabaseAttachment> preUploadAttachments = Stream.of(preUploadAttachmentIds)
|
||||
.map(attachmentDatabase::getAttachment)
|
||||
.toList();
|
||||
|
||||
if (messages.size() > 0) {
|
||||
List<OutgoingSecureMediaMessage> secondaryMessages = messages.subList(1, messages.size());
|
||||
List<OutgoingSecureMediaMessage> secondaryMessages = overwritePreUploadMessageIds ? messages.subList(1, messages.size()) : messages;
|
||||
List<List<AttachmentId>> attachmentCopies = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < preUploadAttachmentIds.size(); i++) {
|
||||
|
@ -389,7 +392,7 @@ public class MessageSender {
|
|||
|
||||
attachmentDatabase.updateMessageId(attachmentIds, messageId, secondaryMessage.getStoryType().isStory());
|
||||
if (primaryMessage.getStoryType() != StoryType.NONE) {
|
||||
for (final AttachmentId preUploadAttachmentId : preUploadAttachmentIds) {
|
||||
for (final AttachmentId preUploadAttachmentId : attachmentIds) {
|
||||
attachmentDatabase.updateAttachmentCaption(preUploadAttachmentId, primaryMessage.getBody());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue