From 6d4b48742827854991d451bcba79ec43a167ee19 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 1 Sep 2023 14:47:44 -0300 Subject: [PATCH] Update shortcut drawable to use content id. --- .../notifications/v2/NotificationBuilder.kt | 13 ++++++++---- .../notifications/v2/NotificationItem.kt | 7 ++++--- .../securesms/providers/AvatarProvider.kt | 1 + .../securesms/util/AvatarUtil.java | 20 +++---------------- .../securesms/util/ConversationUtil.java | 2 +- 5 files changed, 18 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt index 0d9f2f18c3..ff21cdd1cc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationBuilder.kt @@ -274,7 +274,7 @@ sealed class NotificationBuilder(protected val context: Context) { val self: PersonCompat = PersonCompat.Builder() .setBot(false) .setName(if (includeShortcut) Recipient.self().getDisplayName(context) else context.getString(R.string.SingleRecipientNotificationBuilder_you)) - .setIcon(if (includeShortcut) Recipient.self().getContactDrawable(context).toLargeBitmap(context).toIconCompat() else null) + .setIcon(AvatarUtil.getIconWithUriForNotification(Recipient.self().id)) .setKey(ConversationUtil.getShortcutId(Recipient.self().id)) .build() @@ -290,7 +290,7 @@ sealed class NotificationBuilder(protected val context: Context) { .setBot(false) .setName(notificationItem.getPersonName(context)) .setUri(notificationItem.getPersonUri()) - .setIcon(notificationItem.getPersonIcon(context).toIconCompat()) + .setIcon(notificationItem.getPersonIcon()) if (includeShortcut) { personBuilder.setKey(ConversationUtil.getShortcutId(notificationItem.authorRecipient)) @@ -360,7 +360,7 @@ sealed class NotificationBuilder(protected val context: Context) { ) if (intent != null) { - val bubbleMetadata = NotificationCompat.BubbleMetadata.Builder(intent, AvatarUtil.getIconCompatForShortcut(context, conversation.recipient)) + val bubbleMetadata = NotificationCompat.BubbleMetadata.Builder(intent, AvatarUtil.getIconCompatForShortcut(conversation.recipient)) .setAutoExpandBubble(bubbleState === BubbleUtil.BubbleState.SHOWN) .setDesiredHeight(600) .setSuppressNotification(bubbleState === BubbleUtil.BubbleState.SHOWN) @@ -469,7 +469,12 @@ sealed class NotificationBuilder(protected val context: Context) { } override fun addPersonActual(recipient: Recipient) { - builder.addPerson(recipient.contactUri.toString()) + builder.addPerson( + ConversationUtil.buildPerson( + context, + recipient + ) + ) } override fun setWhen(timestamp: Long) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt index cddb0fc1a5..df578f6259 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt @@ -1,12 +1,12 @@ package org.thoughtcrime.securesms.notifications.v2 import android.content.Context -import android.graphics.Bitmap import android.net.Uri import android.text.SpannableString import android.text.SpannableStringBuilder import android.text.TextUtils import androidx.annotation.StringRes +import androidx.core.graphics.drawable.IconCompat import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.contactshare.Contact @@ -25,6 +25,7 @@ import org.thoughtcrime.securesms.mms.SlideDeck import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientUtil import org.thoughtcrime.securesms.service.KeyCachingService +import org.thoughtcrime.securesms.util.AvatarUtil import org.thoughtcrime.securesms.util.MediaUtil import org.thoughtcrime.securesms.util.SpanUtil import org.thoughtcrime.securesms.util.Util @@ -122,9 +123,9 @@ sealed class NotificationItem(val threadRecipient: Recipient, protected val reco } } - fun getPersonIcon(context: Context): Bitmap? { + fun getPersonIcon(): IconCompat? { return if (SignalStore.settings().messageNotificationsPrivacy.isDisplayContact) { - authorRecipient.getContactDrawable(context).toLargeBitmap(context) + AvatarUtil.getIconWithUriForNotification(authorRecipient.id) } else { null } diff --git a/app/src/main/java/org/thoughtcrime/securesms/providers/AvatarProvider.kt b/app/src/main/java/org/thoughtcrime/securesms/providers/AvatarProvider.kt index 92496551fe..44cfdaeec3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/providers/AvatarProvider.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/providers/AvatarProvider.kt @@ -60,6 +60,7 @@ class AvatarProvider : BaseContentProvider() { @JvmStatic fun getContentUri(recipientId: RecipientId): Uri { + Log.d(TAG, "getContentUri: $recipientId") return ContentUris.withAppendedId(CONTENT_URI, recipientId.toLong()) } } 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 aef23f452e..e4b09b1c08 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/AvatarUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/AvatarUtil.java @@ -114,22 +114,8 @@ public final class AvatarUtil { } @WorkerThread - public static @NonNull IconCompat getIconCompatForShortcut(@NonNull Context context, @NonNull Recipient recipient) { - try { - GlideRequest glideRequest = GlideApp.with(context).asBitmap().load(new ConversationShortcutPhoto(recipient)); - if (recipient.shouldBlurAvatar()) { - glideRequest = glideRequest.transform(new BlurTransformation(context, 0.25f, BlurTransformation.MAX_RADIUS)); - } - return IconCompat.createWithAdaptiveBitmap(glideRequest.submit().get()); - } catch (ExecutionException | InterruptedException 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); - } + public static @NonNull IconCompat getIconCompatForShortcut(@NonNull Recipient recipient) { + return getIconWithUriForNotification(recipient.getId()); } @WorkerThread @@ -223,7 +209,7 @@ public final class AvatarUtil { @Override public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { - Log.d(TAG, "AvatarTarget#onResourceReady:"); + Log.d(TAG, "AvatarTarget#onResourceReady: " + resource.getWidth() + ", " + resource.getHeight() + ", s:" + size); bitmap.set(resource); countDownLatch.countDown(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java index bd20b8944a..e887dd54bd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/ConversationUtil.java @@ -226,7 +226,7 @@ public final class ConversationUtil { .setIntent(ConversationIntents.createBuilderSync(context, resolved.getId(), threadId).build()) .setShortLabel(shortName) .setLongLabel(longName) - .setIcon(AvatarUtil.getIconCompatForShortcut(context, resolved)) + .setIcon(AvatarUtil.getIconCompatForShortcut(resolved)) .setPersons(persons) .setCategories(Sets.newHashSet(CATEGORY_SHARE_TARGET)) .setActivity(activity)