Update shortcut drawable to use content id.

This commit is contained in:
Alex Hart
2023-09-01 14:47:44 -03:00
committed by Nicholas Tinsley
parent 9337201ffb
commit 6d4b487428
5 changed files with 18 additions and 25 deletions

View File

@@ -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) {

View File

@@ -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
}

View File

@@ -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())
}
}

View File

@@ -114,22 +114,8 @@ public final class AvatarUtil {
}
@WorkerThread
public static @NonNull IconCompat getIconCompatForShortcut(@NonNull Context context, @NonNull Recipient recipient) {
try {
GlideRequest<Bitmap> 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<? super Bitmap> transition) {
Log.d(TAG, "AvatarTarget#onResourceReady:");
Log.d(TAG, "AvatarTarget#onResourceReady: " + resource.getWidth() + ", " + resource.getHeight() + ", s:" + size);
bitmap.set(resource);
countDownLatch.countDown();
}

View File

@@ -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)