aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/http/HttpDownloadConnection.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/pixart/messenger/http/HttpDownloadConnection.java')
-rw-r--r--src/main/java/de/pixart/messenger/http/HttpDownloadConnection.java39
1 files changed, 19 insertions, 20 deletions
diff --git a/src/main/java/de/pixart/messenger/http/HttpDownloadConnection.java b/src/main/java/de/pixart/messenger/http/HttpDownloadConnection.java
index cf867d796..457292e27 100644
--- a/src/main/java/de/pixart/messenger/http/HttpDownloadConnection.java
+++ b/src/main/java/de/pixart/messenger/http/HttpDownloadConnection.java
@@ -25,7 +25,6 @@ import de.pixart.messenger.entities.Account;
import de.pixart.messenger.entities.DownloadableFile;
import de.pixart.messenger.entities.Message;
import de.pixart.messenger.entities.Transferable;
-import de.pixart.messenger.entities.TransferablePlaceholder;
import de.pixart.messenger.persistance.FileBackend;
import de.pixart.messenger.services.AbstractConnectionManager;
import de.pixart.messenger.services.XmppConnectionService;
@@ -41,7 +40,7 @@ public class HttpDownloadConnection implements Transferable {
private XmppConnectionService mXmppConnectionService;
private URL mUrl;
- private Message message;
+ private final Message message;
private DownloadableFile file;
private int mStatus = Transferable.STATUS_UNKNOWN;
private boolean acceptedAutomatically = false;
@@ -51,8 +50,8 @@ public class HttpDownloadConnection implements Transferable {
private Method method = Method.HTTP_UPLOAD;
private final SimpleDateFormat fileDateFormat = new SimpleDateFormat("yyyyMMdd_HHmmssSSS", Locale.US);
-
- HttpDownloadConnection(HttpConnectionManager manager) {
+ HttpDownloadConnection(Message message, HttpConnectionManager manager) {
+ this.message = message;
this.mHttpConnectionManager = manager;
this.mXmppConnectionService = manager.getXmppConnectionService();
this.mUseTor = mXmppConnectionService.useTorToConnect();
@@ -72,12 +71,7 @@ public class HttpDownloadConnection implements Transferable {
}
}
- public void init(Message message) {
- init(message, false);
- }
-
- public void init(Message message, boolean interactive) {
- this.message = message;
+ public void init(boolean interactive) {
this.message.setTransferable(this);
try {
if (message.hasFileOnRemoteHost()) {
@@ -137,16 +131,14 @@ public class HttpDownloadConnection implements Transferable {
public void cancel() {
this.canceled = true;
mHttpConnectionManager.finishConnection(this);
+ message.setTransferable(null);
if (message.isFileOrImage()) {
- message.setTransferable(new TransferablePlaceholder(Transferable.STATUS_DELETED));
- } else {
- message.setTransferable(null);
+ message.setFileDeleted(true);
}
mHttpConnectionManager.updateConversationUi(true);
}
private void finish() {
- mXmppConnectionService.getFileBackend().updateMediaScanner(file);
message.setTransferable(null);
mHttpConnectionManager.finishConnection(this);
boolean notify = acceptedAutomatically && !message.isRead();
@@ -154,9 +146,12 @@ public class HttpDownloadConnection implements Transferable {
notify = message.getConversation().getAccount().getPgpDecryptionService().decrypt(message, notify);
}
mHttpConnectionManager.updateConversationUi(true);
- if (notify) {
- mXmppConnectionService.getNotificationService().push(message);
- }
+ final boolean notifyAfterScan = notify;
+ mXmppConnectionService.getFileBackend().updateMediaScanner(file, () -> {
+ if (notifyAfterScan) {
+ mXmppConnectionService.getNotificationService().push(message);
+ }
+ });
}
private void changeStatus(int status) {
@@ -200,6 +195,10 @@ public class HttpDownloadConnection implements Transferable {
return this.mProgress;
}
+ public Message getMessage() {
+ return message;
+ }
+
private class FileSizeChecker implements Runnable {
private final boolean interactive;
@@ -379,9 +378,9 @@ public class HttpDownloadConnection implements Transferable {
connection.setUseCaches(false);
connection.setRequestProperty("User-Agent", mXmppConnectionService.getIqGenerator().getUserAgent());
connection.setRequestProperty("Accept-Encoding", "identity");
- final boolean tryResume = file.exists() && file.getKey() == null && file.getSize() > 0;
+ final long expected = file.getExpectedSize();
+ final boolean tryResume = file.exists() && file.getKey() == null && file.getSize() > 0 && file.getSize() < expected;
long resumeSize = 0;
- long expected = file.getExpectedSize();
if (tryResume) {
resumeSize = file.getSize();
Log.d(Config.LOGTAG, "http download trying resume after" + resumeSize + " of " + expected);
@@ -466,4 +465,4 @@ public class HttpDownloadConnection implements Transferable {
}
}
-}
+} \ No newline at end of file