diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java index 3063b6b033581be7995bc5d593182e788fb7ae3f..abba72fa86f3536e13e164ddf20f7573e6f15ed0 100644 --- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java @@ -37,6 +37,8 @@ import androidx.annotation.StringRes; import androidx.core.content.FileProvider; import androidx.exifinterface.media.ExifInterface; +import com.cheogram.android.BobTransfer; + import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.io.ByteStreams; @@ -1074,6 +1076,13 @@ public class FileBackend { cache.put(file.getAbsolutePath(), thumbnail); return thumbnail; } + } else if (uri.getScheme().equals("cid")) { + Cid cid = BobTransfer.cid(uri); + if (cid == null) continue; + DownloadableFile f = mXmppConnectionService.getFileForCid(cid); + if (f != null && f.canRead()) { + return getThumbnail(f, res, size, cacheOnly); + } } } } diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 54f2c7ad07e2431814760f8b0c1db59dc3156709..7194f5c80ec1f7a890a454bd0fcfbc02ffde8a00 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -601,6 +601,18 @@ public class MessageAdapter extends ArrayAdapter { String[] parts = uri.getSchemeSpecificPart().split(",", 2); parts = parts[0].split(";"); if (!parts[0].equals("image/blurhash") && !parts[0].equals("image/jpeg") && !parts[0].equals("image/png") && !parts[0].equals("image/webp") && !parts[0].equals("image/gif")) continue; + } else if (uri.getScheme().equals("cid")) { + Cid cid = BobTransfer.cid(uri); + if (cid == null) continue; + DownloadableFile f = activity.xmppConnectionService.getFileForCid(cid); + if (f == null || !f.canRead()) { + if (!message.trusted() && !message.getConversation().canInferPresence()) continue; + + try { + new BobTransfer(BobTransfer.uri(cid), message.getConversation().getAccount(), message.getCounterpart(), activity.xmppConnectionService).start(); + } catch (final NoSuchAlgorithmException | URISyntaxException e) { } + continue; + } } else { continue; }