Add 2s timeout to message notifier icon loading.

This commit is contained in:
Alex Hart
2025-11-19 13:41:48 -04:00
committed by Cody Henthorne
parent 0afa75564f
commit 6680e74cea

View File

@@ -22,6 +22,10 @@ import org.thoughtcrime.securesms.notifications.NotificationIds
import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.util.BitmapUtil import org.thoughtcrime.securesms.util.BitmapUtil
import java.util.concurrent.ExecutionException 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? { fun Drawable?.toLargeBitmap(context: Context): Bitmap? {
if (this == null) { 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_width),
context.resources.getDimensionPixelSize(android.R.dimen.notification_large_icon_height) context.resources.getDimensionPixelSize(android.R.dimen.notification_large_icon_height)
) )
.get() .get(IMAGE_LOAD_TIMEOUT_SECONDS, TimeUnit.SECONDS)
} catch (e: InterruptedException) { } catch (e: InterruptedException) {
FallbackAvatarDrawable(context, fallbackAvatar).circleCrop() FallbackAvatarDrawable(context, fallbackAvatar).circleCrop()
} catch (e: ExecutionException) { } catch (e: ExecutionException) {
FallbackAvatarDrawable(context, fallbackAvatar).circleCrop() FallbackAvatarDrawable(context, fallbackAvatar).circleCrop()
} catch (e: TimeoutException) {
FallbackAvatarDrawable(context, fallbackAvatar).circleCrop()
} }
} else { } else {
FallbackAvatarDrawable(context, fallbackAvatar).circleCrop() FallbackAvatarDrawable(context, fallbackAvatar).circleCrop()
@@ -66,11 +72,13 @@ fun Uri.toBitmap(context: Context, dimension: Int): Bitmap {
.load(DecryptableUri(this)) .load(DecryptableUri(this))
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.NONE)
.submit(dimension, dimension) .submit(dimension, dimension)
.get() .get(2, TimeUnit.SECONDS)
} catch (e: InterruptedException) { } catch (e: InterruptedException) {
Bitmap.createBitmap(dimension, dimension, Bitmap.Config.RGB_565) Bitmap.createBitmap(dimension, dimension, Bitmap.Config.RGB_565)
} catch (e: ExecutionException) { } catch (e: ExecutionException) {
Bitmap.createBitmap(dimension, dimension, Bitmap.Config.RGB_565) Bitmap.createBitmap(dimension, dimension, Bitmap.Config.RGB_565)
} catch (e: TimeoutException) {
Bitmap.createBitmap(dimension, dimension, Bitmap.Config.RGB_565)
} }
} }