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);