Fix notification reply avatar showing note to self instead of profile photo.

This commit is contained in:
jeffrey-signal
2026-03-27 11:21:14 -04:00
committed by GitHub
parent 59c27797d6
commit c76c3f65f2
3 changed files with 24 additions and 17 deletions

View File

@@ -46,9 +46,9 @@ sealed interface FallbackAvatar {
fun getIconBySize(size: Size): Int
/**
* Local user
* Note to Self / local user
*/
data class Local(override val color: AvatarColor) : Resource {
data class NoteToSelf(override val color: AvatarColor) : Resource {
override fun getIconBySize(size: Size): Int {
return when (size) {
Size.SMALL -> R.drawable.symbol_note_compact_16

View File

@@ -709,7 +709,7 @@ class Recipient(
fun getFallbackAvatar(): FallbackAvatar {
return if (isSelf) {
FallbackAvatar.Resource.Local(avatarColor)
FallbackAvatar.Resource.NoteToSelf(avatarColor)
} else if (isResolving) {
FallbackAvatar.Transparent
} else if (isDistributionList) {

View File

@@ -30,6 +30,7 @@ import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatar;
import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatarDrawable;
import org.thoughtcrime.securesms.conversation.colors.AvatarColor;
import org.thoughtcrime.securesms.contacts.avatars.ContactPhoto;
import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto;
import org.thoughtcrime.securesms.conversation.colors.AvatarGradientColors;
@@ -126,7 +127,12 @@ public final class AvatarUtil {
*/
@WorkerThread
public static @NonNull IconCompat getIconCompatForShortcut(@NonNull Context context, @NonNull Recipient recipient) {
return IconCompat.createWithBitmap(getBitmapForNotification(context, recipient, AdaptiveBitmapMetrics.getInnerWidth()));
int size = AdaptiveBitmapMetrics.getInnerWidth();
if (recipient.isSelf()) {
Drawable noteToSelfDrawable = getNoteToSelfDrawable(context, recipient.getAvatarColor(), size);
return IconCompat.createWithBitmap(DrawableUtil.toBitmap(noteToSelfDrawable, size, size));
}
return IconCompat.createWithBitmap(getBitmapForNotification(context, recipient, size));
}
@WorkerThread
@@ -138,10 +144,6 @@ public final class AvatarUtil {
public static @NonNull Bitmap getBitmapForNotification(@NonNull Context context, @NonNull Recipient recipient, int size) {
ThreadUtil.assertNotMainThread();
if (recipient.isSelf()) {
return DrawableUtil.toBitmap(getFallback(context, recipient, size), size, size);
}
try {
AvatarTarget avatarTarget = new AvatarTarget(size);
RequestManager requestManager = Glide.with(context);
@@ -193,18 +195,23 @@ public final class AvatarUtil {
}
}
@NonNull
private static Drawable getFallback(@NonNull Context context, @NonNull Recipient recipient, int targetSize) {
FallbackAvatar fallbackAvatar;
if (recipient.isSelf()) {
fallbackAvatar = recipient.getFallbackAvatar();
} else {
fallbackAvatar = FallbackAvatar.forTextOrDefault(recipient.getDisplayName(context), recipient.getAvatarColor());
}
FallbackAvatar fallbackAvatar = recipient.isSelf() ? recipient.getFallbackAvatar()
: FallbackAvatar.forTextOrDefault(recipient.getDisplayName(context), recipient.getAvatarColor());
return createFallbackDrawable(context, fallbackAvatar, targetSize);
}
Drawable avatar = new FallbackAvatarDrawable(context, fallbackAvatar).circleCrop();
avatar.setBounds(0, 0, targetSize, targetSize);
@NonNull
private static Drawable getNoteToSelfDrawable(@NonNull Context context, @NonNull AvatarColor avatarColor, int size) {
return createFallbackDrawable(context, new FallbackAvatar.Resource.NoteToSelf(avatarColor), size);
}
return avatar;
@NonNull
private static Drawable createFallbackDrawable(@NonNull Context context, @NonNull FallbackAvatar avatar, int size) {
Drawable drawable = new FallbackAvatarDrawable(context, avatar).circleCrop();
drawable.setBounds(0, 0, size, size);
return drawable;
}
/**