kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix issue where synced media messages weren't downloading.
There was race where the AttachmentDownloadJob was run during a transaction, which meant that it might not be able to see the message that was just inserted. Gotta be more careful now with WAL mode.fork-5.53.8
rodzic
dbb1e50d00
commit
29489a664e
|
@ -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<DatabaseAttachment> attachments;
|
||||
List<DatabaseAttachment> 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<DatabaseAttachment> allAttachments = DatabaseFactory.getAttachmentDatabase(context).getAttachmentsForMessage(messageId);
|
||||
List<DatabaseAttachment> stickerAttachments = Stream.of(allAttachments).filter(Attachment::isSticker).toList();
|
||||
List<DatabaseAttachment> attachments = Stream.of(allAttachments).filterNot(Attachment::isSticker).toList();
|
||||
List<DatabaseAttachment> 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;
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue