do not display toast for cancelled downloads

This commit is contained in:
Daniel Gultsch 2021-03-20 11:00:20 +01:00
parent aaac8296b3
commit 38ef69a926
1 changed files with 10 additions and 11 deletions

View File

@ -211,14 +211,19 @@ public class HttpDownloadConnection implements Transferable {
mHttpConnectionManager.updateConversationUi(true);
}
private void showToastForException(Exception e) {
private void showToastForException(final Exception e) {
final Call call = mostRecentCall;
final boolean cancelled = call != null && call.isCanceled();
if (e == null || cancelled) {
return;
}
if (e instanceof java.net.UnknownHostException) {
mXmppConnectionService.showErrorToastInUi(R.string.download_failed_server_not_found);
} else if (e instanceof java.net.ConnectException) {
mXmppConnectionService.showErrorToastInUi(R.string.download_failed_could_not_connect);
} else if (e instanceof FileWriterException) {
mXmppConnectionService.showErrorToastInUi(R.string.download_failed_could_not_write_file);
} else if (!(e instanceof CancellationException)) {
} else {
mXmppConnectionService.showErrorToastInUi(R.string.download_failed_file_not_found);
}
}
@ -268,9 +273,7 @@ public class HttpDownloadConnection implements Transferable {
private void retrieveFailed(@Nullable Exception e) {
changeStatus(STATUS_OFFER_CHECK_FILESIZE);
if (interactive) {
if (e != null) {
showToastForException(e);
}
showToastForException(e);
} else {
HttpDownloadConnection.this.acceptedAutomatically = false;
HttpDownloadConnection.this.mXmppConnectionService.getNotificationService().push(message);
@ -362,8 +365,7 @@ public class HttpDownloadConnection implements Transferable {
} catch (final SSLHandshakeException e) {
changeStatus(STATUS_OFFER);
} catch (final Exception e) {
Log.d(Config.LOGTAG,"problem downloading",e);
//TODO do not show toast for cancelled stuff
Log.d(Config.LOGTAG, message.getConversation().getAccount().getJid().asBareJid() + ": unable to download file", e);
if (interactive) {
showToastForException(e);
} else {
@ -421,7 +423,7 @@ public class HttpDownloadConnection implements Transferable {
outputStream = AbstractConnectionManager.createOutputStream(file, false, false);
}
int count;
byte[] buffer = new byte[4096];
final byte[] buffer = new byte[4096];
while ((count = inputStream.read(buffer)) != -1) {
transmitted += count;
try {
@ -430,9 +432,6 @@ public class HttpDownloadConnection implements Transferable {
throw new FileWriterException();
}
updateProgress(Math.round(((double) transmitted / expected) * 100));
if (canceled) {
throw new CancellationException();
}
}
outputStream.flush();
} else {