diff --git a/CHANGES.md b/CHANGES.md index 16b39cc6b1..ef4f19fffe 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -25,6 +25,7 @@ Bugfix 🐛: - Cross- Signing | After signin in new session, verification paper trail in DM is off (#1191) - Failed to encrypt message in room (message stays in red), [thanks to pwr22] (#925) - Cross-Signing | web <-> riotX After QR code scan, gossiping fails (#1210) + - Fix crash when trying to download file without internet connection (#1229) Translations 🗣: - diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt index 9eaea8cc34..6e6beecfb1 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt @@ -19,6 +19,7 @@ package im.vector.matrix.android.internal.session import android.os.Environment import arrow.core.Try import im.vector.matrix.android.api.MatrixCallback +import im.vector.matrix.android.api.extensions.tryThis import im.vector.matrix.android.api.session.content.ContentUrlResolver import im.vector.matrix.android.api.session.file.FileService import im.vector.matrix.android.api.util.Cancelable @@ -77,9 +78,10 @@ internal class DefaultFileService @Inject constructor( .url(resolvedUrl) .build() - val response = okHttpClient.newCall(request).execute() + val response = tryThis { okHttpClient.newCall(request).execute() } ?: return@flatMap Try.Failure(IOException()) var inputStream = response.body?.byteStream() Timber.v("Response size ${response.body?.contentLength()} - Stream available: ${inputStream?.available()}") + if (!response.isSuccessful || inputStream == null) { return@flatMap Try.Failure(IOException()) }