From 86dbeaa892ec4111e3347429f97647c8c352d5b9 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Sat, 17 Dec 2022 22:30:56 -0500 Subject: [PATCH] If we already have a file by this hash, let's just use it Was already the case for BobTransfer, but here we do it before looking to see what kind of transfers are supported. Even if there are no sources at all, if we have this has already it'll work. --- .../conversations/parser/MessageParser.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index f4030e437d4fa0136838326340ea97872f3c700c..6ccfe69b4cde5c2b07cb84656c6b2bd5354a7a17 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -5,6 +5,7 @@ import android.util.Pair; import com.cheogram.android.BobTransfer; +import java.io.File; import java.net.URISyntaxException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -18,6 +19,8 @@ import java.util.Map; import java.util.Set; import java.util.UUID; +import io.ipfs.cid.Cid; + import eu.siacs.conversations.Config; import eu.siacs.conversations.R; import eu.siacs.conversations.crypto.axolotl.AxolotlService; @@ -775,9 +778,21 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece processMessageReceipts(account, packet, remoteMsgId, query); } + if (message.getFileParams() != null) { + for (Cid cid : message.getFileParams().getCids()) { + File f = mXmppConnectionService.getFileForCid(cid); + if (f != null && f.canRead()) { + message.setRelativeFilePath(f.getAbsolutePath()); + mXmppConnectionService.getFileBackend().updateFileParams(message, null, false); + break; + } + } + } + mXmppConnectionService.databaseBackend.createMessage(message); + final HttpConnectionManager manager = this.mXmppConnectionService.getHttpConnectionManager(); - if (message.trusted() && message.treatAsDownloadable() && manager.getAutoAcceptFileSize() > 0) { + if (message.getRelativeFilePath() == null && message.trusted() && message.treatAsDownloadable() && manager.getAutoAcceptFileSize() > 0) { if (message.getOob() != null && message.getOob().getScheme().equalsIgnoreCase("cid")) { try { BobTransfer transfer = new BobTransfer.ForMessage(message, mXmppConnectionService);