If we already have a file by this hash, let's just use it
Stephen Paul Weber
created 3 years ago
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.
Change summary
src/main/java/eu/siacs/conversations/parser/MessageParser.java | 17 +++
1 file changed, 16 insertions(+), 1 deletion(-)
Detailed changes
@@ -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);