From fe82c4e487fca9f208d7389610450fc9b41d7c35 Mon Sep 17 00:00:00 2001 From: Lucio Maciel Date: Thu, 9 Sep 2021 11:47:46 -0300 Subject: [PATCH] Fix image partially shown after message sent. --- .../securesms/database/AttachmentDatabase.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java index 34b483b3d5..7c743d783f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java @@ -1076,12 +1076,18 @@ public class AttachmentDatabase extends Database { throws MmsException { try { + File tempFile = newFile(); MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); DigestInputStream digestInputStream = new DigestInputStream(in, messageDigest); - Pair out = ModernEncryptingPartOutputStream.createFor(attachmentSecret, destination, false); + Pair out = ModernEncryptingPartOutputStream.createFor(attachmentSecret, tempFile, false); long length = StreamUtil.copy(digestInputStream, out.second); String hash = Base64.encodeBytes(digestInputStream.getMessageDigest().digest()); + if (!tempFile.renameTo(destination)) { + Log.w(TAG, "Couldn't rename " + tempFile.getPath() + " to " + destination.getPath()); + throw new IllegalStateException("Couldn't rename " + tempFile.getPath() + " to " + destination.getPath()); + } + SQLiteDatabase database = databaseHelper.getSignalWritableDatabase(); Optional sharedDataInfo = findDuplicateDataFileInfo(database, hash, attachmentId); if (sharedDataInfo.isPresent()) {