Change summary
src/main/java/eu/siacs/conversations/persistance/FileBackend.java | 9
src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 12
2 files changed, 21 insertions(+)
Detailed changes
@@ -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);
+ }
}
}
}
@@ -601,6 +601,18 @@ public class MessageAdapter extends ArrayAdapter<Message> {
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;
}