mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 21:15:48 +00:00
Update shortcut drawable to use content id.
This commit is contained in:
committed by
Nicholas Tinsley
parent
9337201ffb
commit
6d4b487428
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user