diff --git a/src/main/java/eu/siacs/conversations/services/AttachFileToConversationRunnable.java b/src/main/java/eu/siacs/conversations/services/AttachFileToConversationRunnable.java index f86371be6157f642638e28ae7b9881d6bdc9c6fd..47a7c70d24c918350501fdc1abf585bafa6cc09e 100644 --- a/src/main/java/eu/siacs/conversations/services/AttachFileToConversationRunnable.java +++ b/src/main/java/eu/siacs/conversations/services/AttachFileToConversationRunnable.java @@ -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 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) { diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index a129d0e0d8ff080f76efd77409ee0483a0fe19d3..5ab85fa731dc4d3905d073da688dc60fbc48b19a 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -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)) { diff --git a/src/main/java/eu/siacs/conversations/ui/util/Attachment.java b/src/main/java/eu/siacs/conversations/ui/util/Attachment.java index 4f859cf9cbdaa7e0ba5873723c1698fae75180cb..885b5da13777d969b6878536223214a880f959db 100644 --- a/src/main/java/eu/siacs/conversations/ui/util/Attachment.java +++ b/src/main/java/eu/siacs/conversations/ui/util/Attachment.java @@ -131,7 +131,7 @@ public class Attachment implements Parcelable { public static boolean canBeSendInBand(final List attachments) { for (final Attachment attachment : attachments) { - if (attachment.type != Type.LOCATION) { + if (attachment.type != Type.LOCATION && !"https".equals(attachment.uri.getScheme())) { return false; } }