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 bbe26b343..2dd43c5fb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java @@ -1365,12 +1365,15 @@ public final class MessageContentProcessor { handleSynchronizeSentExpirationUpdate(message); } - long threadId = DatabaseFactory.getThreadDatabase(context).getOrCreateThreadIdFor(recipients); + long threadId = DatabaseFactory.getThreadDatabase(context).getOrCreateThreadIdFor(recipients); + + long messageId; + List attachments; + List stickerAttachments; database.beginTransaction(); - try { - long messageId = database.insertMessageOutbox(mediaMessage, threadId, false, GroupReceiptDatabase.STATUS_UNKNOWN, null); + messageId = database.insertMessageOutbox(mediaMessage, threadId, false, GroupReceiptDatabase.STATUS_UNKNOWN, null); if (recipients.isGroup()) { updateGroupReceiptStatus(message, messageId, recipients.requireGroupId()); @@ -1380,15 +1383,10 @@ public final class MessageContentProcessor { database.markAsSent(messageId, true); - List allAttachments = DatabaseFactory.getAttachmentDatabase(context).getAttachmentsForMessage(messageId); - List stickerAttachments = Stream.of(allAttachments).filter(Attachment::isSticker).toList(); - List attachments = Stream.of(allAttachments).filterNot(Attachment::isSticker).toList(); + List allAttachments = DatabaseFactory.getAttachmentDatabase(context).getAttachmentsForMessage(messageId); - forceStickerDownloadIfNecessary(messageId, stickerAttachments); - - for (DatabaseAttachment attachment : attachments) { - ApplicationDependencies.getJobManager().add(new AttachmentDownloadJob(messageId, attachment.getAttachmentId(), false)); - } + stickerAttachments = Stream.of(allAttachments).filter(Attachment::isSticker).toList(); + attachments = Stream.of(allAttachments).filterNot(Attachment::isSticker).toList(); if (message.getMessage().getExpiresInSeconds() > 0) { database.markExpireStarted(messageId, message.getExpirationStartTimestamp()); @@ -1409,6 +1407,13 @@ public final class MessageContentProcessor { } finally { database.endTransaction(); } + + for (DatabaseAttachment attachment : attachments) { + ApplicationDependencies.getJobManager().add(new AttachmentDownloadJob(messageId, attachment.getAttachmentId(), false)); + } + + forceStickerDownloadIfNecessary(messageId, stickerAttachments); + return threadId; }