diff --git a/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java b/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java index 91f8a167f..1aaebd469 100644 --- a/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java +++ b/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java @@ -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 {