Change summary
src/main/java/eu/siacs/conversations/services/AttachFileToConversationRunnable.java | 14
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 1
src/main/java/eu/siacs/conversations/ui/util/Attachment.java | 2
3 files changed, 13 insertions(+), 4 deletions(-)
Detailed changes
@@ -32,6 +32,7 @@ public class AttachFileToConversationRunnable implements Runnable, TranscoderLis
private final XmppConnectionService mXmppConnectionService;
private final Message message;
private final Uri uri;
+ private final String mimeType;
private final String type;
private final UiCallback<Message> callback;
private final boolean isVideoMessage;
@@ -44,7 +45,7 @@ public class AttachFileToConversationRunnable implements Runnable, TranscoderLis
this.mXmppConnectionService = xmppConnectionService;
this.message = message;
this.callback = callback;
- final String mimeType = MimeUtils.guessMimeTypeFromUriAndMime(mXmppConnectionService, uri, type);
+ mimeType = MimeUtils.guessMimeTypeFromUriAndMime(mXmppConnectionService, uri, type);
final int autoAcceptFileSize = mXmppConnectionService.getResources().getInteger(R.integer.auto_accept_filesize);
this.originalFileSize = FileBackend.getFileSize(mXmppConnectionService, uri);
this.isVideoMessage = (mimeType != null && mimeType.startsWith("video/")) && originalFileSize > autoAcceptFileSize && !"uncompressed".equals(getVideoCompression());
@@ -56,7 +57,16 @@ public class AttachFileToConversationRunnable implements Runnable, TranscoderLis
private void processAsFile() {
final String path = mXmppConnectionService.getFileBackend().getOriginalPath(uri);
- if (path != null && !FileBackend.isPathBlacklisted(path)) {
+ if ("https".equals(uri.getScheme())) {
+ message.getFileParams().url = uri.toString();
+ message.getFileParams().setMediaType(mimeType);
+ final int encryption = message.getEncryption();
+ mXmppConnectionService.getHttpConnectionManager().createNewDownloadConnection(message, false, (file) -> {
+ message.setEncryption(encryption);
+ mXmppConnectionService.sendMessage(message);
+ callback.success(message);
+ });
+ } else if (path != null && !FileBackend.isPathBlacklisted(path)) {
message.setRelativeFilePath(path);
mXmppConnectionService.getFileBackend().updateFileParams(message);
if (message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
@@ -719,7 +719,6 @@ public class XmppConnectionService extends Service {
if (conversation.getNextEncryption() == Message.ENCRYPTION_PGP) {
message.setEncryption(Message.ENCRYPTION_DECRYPTED);
}
- if (subject.length() > 0) message.setSubject(subject);
if (subject != null && subject.length() > 0) message.setSubject(subject);
message.setThread(conversation.getThread());
if (!Message.configurePrivateFileMessage(message)) {
@@ -131,7 +131,7 @@ public class Attachment implements Parcelable {
public static boolean canBeSendInBand(final List<Attachment> attachments) {
for (final Attachment attachment : attachments) {
- if (attachment.type != Type.LOCATION) {
+ if (attachment.type != Type.LOCATION && !"https".equals(attachment.uri.getScheme())) {
return false;
}
}