From 6680e74cea7fe18a95bb554b9ecf8b69f58449a5 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 19 Nov 2025 13:41:48 -0400 Subject: [PATCH] Add 2s timeout to message notifier icon loading. --- .../notifications/v2/NotificationExtensions.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationExtensions.kt index b87679799d..ae7da49199 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationExtensions.kt @@ -22,6 +22,10 @@ import org.thoughtcrime.securesms.notifications.NotificationIds import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.util.BitmapUtil import java.util.concurrent.ExecutionException +import java.util.concurrent.TimeUnit +import java.util.concurrent.TimeoutException + +private const val IMAGE_LOAD_TIMEOUT_SECONDS = 2L fun Drawable?.toLargeBitmap(context: Context): Bitmap? { if (this == null) { @@ -48,11 +52,13 @@ fun Recipient.getContactDrawable(context: Context): Drawable? { context.resources.getDimensionPixelSize(android.R.dimen.notification_large_icon_width), context.resources.getDimensionPixelSize(android.R.dimen.notification_large_icon_height) ) - .get() + .get(IMAGE_LOAD_TIMEOUT_SECONDS, TimeUnit.SECONDS) } catch (e: InterruptedException) { FallbackAvatarDrawable(context, fallbackAvatar).circleCrop() } catch (e: ExecutionException) { FallbackAvatarDrawable(context, fallbackAvatar).circleCrop() + } catch (e: TimeoutException) { + FallbackAvatarDrawable(context, fallbackAvatar).circleCrop() } } else { FallbackAvatarDrawable(context, fallbackAvatar).circleCrop() @@ -66,11 +72,13 @@ fun Uri.toBitmap(context: Context, dimension: Int): Bitmap { .load(DecryptableUri(this)) .diskCacheStrategy(DiskCacheStrategy.NONE) .submit(dimension, dimension) - .get() + .get(2, TimeUnit.SECONDS) } catch (e: InterruptedException) { Bitmap.createBitmap(dimension, dimension, Bitmap.Config.RGB_565) } catch (e: ExecutionException) { Bitmap.createBitmap(dimension, dimension, Bitmap.Config.RGB_565) + } catch (e: TimeoutException) { + Bitmap.createBitmap(dimension, dimension, Bitmap.Config.RGB_565) } }