allow redownloading files from remote hosts. fixes #1504
This commit is contained in:
parent
e9e31b1c9b
commit
0f405c2e11
|
@ -22,6 +22,7 @@ import eu.siacs.conversations.R;
|
||||||
import eu.siacs.conversations.entities.DownloadableFile;
|
import eu.siacs.conversations.entities.DownloadableFile;
|
||||||
import eu.siacs.conversations.entities.Message;
|
import eu.siacs.conversations.entities.Message;
|
||||||
import eu.siacs.conversations.entities.Transferable;
|
import eu.siacs.conversations.entities.Transferable;
|
||||||
|
import eu.siacs.conversations.entities.TransferablePlaceholder;
|
||||||
import eu.siacs.conversations.persistance.FileBackend;
|
import eu.siacs.conversations.persistance.FileBackend;
|
||||||
import eu.siacs.conversations.services.AbstractConnectionManager;
|
import eu.siacs.conversations.services.AbstractConnectionManager;
|
||||||
import eu.siacs.conversations.services.XmppConnectionService;
|
import eu.siacs.conversations.services.XmppConnectionService;
|
||||||
|
@ -66,7 +67,11 @@ public class HttpDownloadConnection implements Transferable {
|
||||||
this.message = message;
|
this.message = message;
|
||||||
this.message.setTransferable(this);
|
this.message.setTransferable(this);
|
||||||
try {
|
try {
|
||||||
|
if (message.hasFileOnRemoteHost()) {
|
||||||
|
mUrl = message.getFileParams().url;
|
||||||
|
} else {
|
||||||
mUrl = new URL(message.getBody());
|
mUrl = new URL(message.getBody());
|
||||||
|
}
|
||||||
String[] parts = mUrl.getPath().toLowerCase().split("\\.");
|
String[] parts = mUrl.getPath().toLowerCase().split("\\.");
|
||||||
String lastPart = parts.length >= 1 ? parts[parts.length - 1] : null;
|
String lastPart = parts.length >= 1 ? parts[parts.length - 1] : null;
|
||||||
String secondToLast = parts.length >= 2 ? parts[parts.length -2] : null;
|
String secondToLast = parts.length >= 2 ? parts[parts.length -2] : null;
|
||||||
|
@ -106,7 +111,11 @@ public class HttpDownloadConnection implements Transferable {
|
||||||
|
|
||||||
public void cancel() {
|
public void cancel() {
|
||||||
mHttpConnectionManager.finishConnection(this);
|
mHttpConnectionManager.finishConnection(this);
|
||||||
|
if (message.isFileOrImage()) {
|
||||||
|
message.setTransferable(new TransferablePlaceholder(Transferable.STATUS_DELETED));
|
||||||
|
} else {
|
||||||
message.setTransferable(null);
|
message.setTransferable(null);
|
||||||
|
}
|
||||||
mXmppConnectionService.updateConversationUi();
|
mXmppConnectionService.updateConversationUi();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -489,7 +489,8 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
|
||||||
|| m.treatAsDownloadable() == Message.Decision.MUST) {
|
|| m.treatAsDownloadable() == Message.Decision.MUST) {
|
||||||
copyUrl.setVisible(true);
|
copyUrl.setVisible(true);
|
||||||
}
|
}
|
||||||
if (m.getType() == Message.TYPE_TEXT && m.getTransferable() == null && m.treatAsDownloadable() != Message.Decision.NEVER) {
|
if ((m.getType() == Message.TYPE_TEXT && m.getTransferable() == null && m.treatAsDownloadable() != Message.Decision.NEVER)
|
||||||
|
|| (m.isFileOrImage() && m.getTransferable() instanceof TransferablePlaceholder && m.hasFileOnRemoteHost())){
|
||||||
downloadFile.setVisible(true);
|
downloadFile.setVisible(true);
|
||||||
downloadFile.setTitle(activity.getString(R.string.download_x_file,UIHelper.getFileDescriptionString(activity, m)));
|
downloadFile.setTitle(activity.getString(R.string.download_x_file,UIHelper.getFileDescriptionString(activity, m)));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue