From 9f622bd6894be3af51e2feb0b16ee9c31b1e707c Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 21 Jan 2022 09:07:22 -0400 Subject: [PATCH] Create shortcut fallback instead of crashing application. --- .../org/thoughtcrime/securesms/util/AvatarUtil.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/AvatarUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/AvatarUtil.java index 6331ae600..639ade90f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/AvatarUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/AvatarUtil.java @@ -17,6 +17,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.target.CustomViewTarget; import com.bumptech.glide.request.transition.Transition; +import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.contacts.avatars.ContactPhoto; import org.thoughtcrime.securesms.contacts.avatars.GeneratedContactPhoto; @@ -30,6 +31,8 @@ import java.util.concurrent.ExecutionException; public final class AvatarUtil { + private static final String TAG = Log.tag(AvatarUtil.class); + public static final int UNDEFINED_SIZE = -1; private AvatarUtil() { @@ -113,7 +116,13 @@ public final class AvatarUtil { } return IconCompat.createWithAdaptiveBitmap(glideRequest.submit().get()); } catch (ExecutionException | InterruptedException e) { - throw new AssertionError("This call should not fail.", e); + Log.w(TAG, "Failed to generate shortcut icon for recipient " + recipient.getId() + ". Generating fallback.", e); + + Drawable fallbackDrawable = getFallback(context, recipient, DrawableUtil.SHORTCUT_INFO_WRAPPED_SIZE); + Bitmap fallbackBitmap = DrawableUtil.toBitmap(fallbackDrawable, DrawableUtil.SHORTCUT_INFO_WRAPPED_SIZE, DrawableUtil.SHORTCUT_INFO_WRAPPED_SIZE); + Bitmap wrappedBitmap = DrawableUtil.wrapBitmapForShortcutInfo(fallbackBitmap); + + return IconCompat.createWithAdaptiveBitmap(wrappedBitmap); } }