From af420c84a011c809880c8583a4c6aa8213b503c6 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Thu, 28 Jun 2018 17:44:00 +0200 Subject: [PATCH] automatically start download if file size is known --- .../http/HttpDownloadConnection.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java b/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java index 3d2287d84..12ba5d4f4 100644 --- a/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java +++ b/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java @@ -48,7 +48,7 @@ public class HttpDownloadConnection implements Transferable { private boolean canceled = false; private Method method = Method.HTTP_UPLOAD; - public HttpDownloadConnection(HttpConnectionManager manager) { + HttpDownloadConnection(HttpConnectionManager manager) { this.mHttpConnectionManager = manager; this.mXmppConnectionService = manager.getXmppConnectionService(); this.mUseTor = mXmppConnectionService.useTorToConnect(); @@ -60,7 +60,7 @@ public class HttpDownloadConnection implements Transferable { if (this.mStatus == STATUS_OFFER_CHECK_FILESIZE) { checkFileSize(true); } else { - new Thread(new FileDownloader(true)).start(); + download(true); } return true; } else { @@ -107,12 +107,22 @@ public class HttpDownloadConnection implements Transferable { this.message.setEncryption(Message.ENCRYPTION_NONE); } method = mUrl.getProtocol().equalsIgnoreCase(P1S3UrlStreamHandler.PROTOCOL_NAME) ? Method.P1_S3 : Method.HTTP_UPLOAD; - checkFileSize(interactive); + long knownFileSize = message.getFileParams().size; + if (knownFileSize > 0 && interactive && method != Method.P1_S3) { + this.file.setExpectedSize(knownFileSize); + download(true); + } else { + checkFileSize(interactive); + } } catch (MalformedURLException e) { this.cancel(); } } + private void download(boolean interactive) { + new Thread(new FileDownloader(interactive)).start(); + } + private void checkFileSize(boolean interactive) { new Thread(new FileSizeChecker(interactive)).start(); } @@ -252,7 +262,7 @@ public class HttpDownloadConnection implements Transferable { && size <= mHttpConnectionManager.getAutoAcceptFileSize() && mXmppConnectionService.isDataSaverDisabled()) { HttpDownloadConnection.this.acceptedAutomatically = true; - new Thread(new FileDownloader(interactive)).start(); + download(interactive); } else { changeStatus(STATUS_OFFER); HttpDownloadConnection.this.acceptedAutomatically = false;