From 90ed170f61a661ff5459215b69a63923cf53f13f Mon Sep 17 00:00:00 2001 From: Avently <7953703+avently@users.noreply.github.com> Date: Wed, 9 Nov 2022 14:46:48 +0300 Subject: [PATCH] Catched drawable's DecodeException --- .../chat/simplex/app/views/chat/ComposeView.kt | 14 ++++++++++++-- .../chat/simplex/app/views/usersettings/Cryptor.kt | 2 +- .../android/app/src/main/res/values-de/strings.xml | 4 +++- .../android/app/src/main/res/values-ru/strings.xml | 4 +++- apps/android/app/src/main/res/values/strings.xml | 4 +++- 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt index 6e0045fedd..2735c7ae8e 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ComposeView.kt @@ -7,6 +7,7 @@ import android.content.* import android.content.pm.PackageManager import android.graphics.Bitmap import android.graphics.ImageDecoder +import android.graphics.ImageDecoder.DecodeException import android.graphics.drawable.AnimatedImageDrawable import android.net.Uri import android.provider.MediaStore @@ -199,8 +200,17 @@ fun ComposeView( val imagesPreview = ArrayList() uris.forEach { uri -> val source = ImageDecoder.createSource(context.contentResolver, uri) - val drawable = ImageDecoder.decodeDrawable(source) - var bitmap: Bitmap? = ImageDecoder.decodeBitmap(source) + val drawable = try { + ImageDecoder.decodeDrawable(source) + } catch (e: DecodeException) { + AlertManager.shared.showAlertMsg( + title = generalGetString(R.string.image_decoding_exception_title), + text = generalGetString(R.string.image_decoding_exception_desc) + ) + Log.e(TAG, "Error while decoding drawable: ${e.stackTraceToString()}") + null + } + var bitmap: Bitmap? = if (drawable != null) ImageDecoder.decodeBitmap(source) else null if (drawable is AnimatedImageDrawable) { // It's a gif or webp val fileSize = getFileSize(context, uri) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/Cryptor.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/Cryptor.kt index 34f11f8287..49770b9724 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/Cryptor.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/Cryptor.kt @@ -23,7 +23,7 @@ internal class Cryptor { warningIsShown = true AlertManager.shared.showAlertMsg( title = generalGetString(R.string.wrong_passphrase), - text = generalGetString(R.string.restored_from_backup_broken_text) + text = generalGetString(R.string.restored_from_backup_broken_desc) ) } return null diff --git a/apps/android/app/src/main/res/values-de/strings.xml b/apps/android/app/src/main/res/values-de/strings.xml index c055ce4f6d..edb17065b2 100644 --- a/apps/android/app/src/main/res/values-de/strings.xml +++ b/apps/android/app/src/main/res/values-de/strings.xml @@ -183,6 +183,8 @@ Dateivorschau abbrechen Zu viele Bilder! Es können nur 10 Bilder auf einmal gesendet werden + ***Decoding error + ***The image cannot be decoded. Please, try with different image or contact devs Bild @@ -674,7 +676,7 @@ Bitte geben Sie das vorherige Passwort ein, nachdem Sie die Datenbanksicherung wiederhergestellt haben. Diese Aktion kann nicht rückgängig gemacht werden. Wiederherstellen Fehler bei der Wiederherstellung der Datenbank - ***Looks like you restored the app\'s data from a backup (using TitaniumBackup or similar tool). Encryption passphrase should be entered manually. \n\nIf it\'s not the case, please, contact devs + ***Looks like you restored the app\'s data from a backup (using TitaniumBackup or similar tool). Encryption passphrase should be entered manually. \n\nIf it\'s not the case, please, contact devs Chat wurde beendet diff --git a/apps/android/app/src/main/res/values-ru/strings.xml b/apps/android/app/src/main/res/values-ru/strings.xml index 6bcde09e01..81b09ac77f 100644 --- a/apps/android/app/src/main/res/values-ru/strings.xml +++ b/apps/android/app/src/main/res/values-ru/strings.xml @@ -183,6 +183,8 @@ Удалить превью файла Слишком много изображений! Только 10 изображений могут быть отправлены одномоментно + Ошибка декодирования + Не получается декодировать изображение. Пожалуйста, попробуйте другое или свяжитесь с разработчиками Изображение @@ -674,7 +676,7 @@ Введите предыдущий пароль после восстановления резервной копии. Это действие нельзя отменить. Восстановить Ошибка при восстановлении базы данных - Похоже, вы восстановили данные программы из бэкапа (используя TitaniumBackup или похожий инструмент). Нужно ввести пароль от базы данных вручную. \n\nЕсли причина не в этом, пожалуйста, свяжитесь с разработчиками + Похоже, вы восстановили данные программы из бэкапа (используя TitaniumBackup или похожий инструмент). Нужно ввести пароль от базы данных вручную. \n\nЕсли причина не в этом, пожалуйста, свяжитесь с разработчиками Чат остановлен diff --git a/apps/android/app/src/main/res/values/strings.xml b/apps/android/app/src/main/res/values/strings.xml index b81e6c3c0a..c5c076fc87 100644 --- a/apps/android/app/src/main/res/values/strings.xml +++ b/apps/android/app/src/main/res/values/strings.xml @@ -183,6 +183,8 @@ Cancel file preview Too many images! Only 10 images can be sent at the same time + Decoding error + The image cannot be decoded. Please, try with different image or contact devs Image @@ -674,7 +676,7 @@ Please enter the previous password after restoring database backup. This action can not be undone. Restore Restore database error - Looks like you restored the app\'s data from a backup (using TitaniumBackup or similar tool). Encryption passphrase should be entered manually. \n\nIf it\'s not the case, please, contact devs + Looks like you restored the app\'s data from a backup (using TitaniumBackup or similar tool). Encryption passphrase should be entered manually. \n\nIf it\'s not the case, please, contact devs Chat is stopped