mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-05-08 09:18:39 +01:00
Fix notification reply avatar showing note to self instead of profile photo.
This commit is contained in:
@@ -46,9 +46,9 @@ sealed interface FallbackAvatar {
|
|||||||
fun getIconBySize(size: Size): Int
|
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 {
|
override fun getIconBySize(size: Size): Int {
|
||||||
return when (size) {
|
return when (size) {
|
||||||
Size.SMALL -> R.drawable.symbol_note_compact_16
|
Size.SMALL -> R.drawable.symbol_note_compact_16
|
||||||
|
|||||||
@@ -709,7 +709,7 @@ class Recipient(
|
|||||||
|
|
||||||
fun getFallbackAvatar(): FallbackAvatar {
|
fun getFallbackAvatar(): FallbackAvatar {
|
||||||
return if (isSelf) {
|
return if (isSelf) {
|
||||||
FallbackAvatar.Resource.Local(avatarColor)
|
FallbackAvatar.Resource.NoteToSelf(avatarColor)
|
||||||
} else if (isResolving) {
|
} else if (isResolving) {
|
||||||
FallbackAvatar.Transparent
|
FallbackAvatar.Transparent
|
||||||
} else if (isDistributionList) {
|
} else if (isDistributionList) {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import org.signal.core.util.logging.Log;
|
|||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatar;
|
import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatar;
|
||||||
import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatarDrawable;
|
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.ContactPhoto;
|
||||||
import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto;
|
import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto;
|
||||||
import org.thoughtcrime.securesms.conversation.colors.AvatarGradientColors;
|
import org.thoughtcrime.securesms.conversation.colors.AvatarGradientColors;
|
||||||
@@ -126,7 +127,12 @@ public final class AvatarUtil {
|
|||||||
*/
|
*/
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
public static @NonNull IconCompat getIconCompatForShortcut(@NonNull Context context, @NonNull Recipient recipient) {
|
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
|
@WorkerThread
|
||||||
@@ -138,10 +144,6 @@ public final class AvatarUtil {
|
|||||||
public static @NonNull Bitmap getBitmapForNotification(@NonNull Context context, @NonNull Recipient recipient, int size) {
|
public static @NonNull Bitmap getBitmapForNotification(@NonNull Context context, @NonNull Recipient recipient, int size) {
|
||||||
ThreadUtil.assertNotMainThread();
|
ThreadUtil.assertNotMainThread();
|
||||||
|
|
||||||
if (recipient.isSelf()) {
|
|
||||||
return DrawableUtil.toBitmap(getFallback(context, recipient, size), size, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
AvatarTarget avatarTarget = new AvatarTarget(size);
|
AvatarTarget avatarTarget = new AvatarTarget(size);
|
||||||
RequestManager requestManager = Glide.with(context);
|
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) {
|
private static Drawable getFallback(@NonNull Context context, @NonNull Recipient recipient, int targetSize) {
|
||||||
FallbackAvatar fallbackAvatar;
|
FallbackAvatar fallbackAvatar = recipient.isSelf() ? recipient.getFallbackAvatar()
|
||||||
if (recipient.isSelf()) {
|
: FallbackAvatar.forTextOrDefault(recipient.getDisplayName(context), recipient.getAvatarColor());
|
||||||
fallbackAvatar = recipient.getFallbackAvatar();
|
return createFallbackDrawable(context, fallbackAvatar, targetSize);
|
||||||
} else {
|
|
||||||
fallbackAvatar = FallbackAvatar.forTextOrDefault(recipient.getDisplayName(context), recipient.getAvatarColor());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Drawable avatar = new FallbackAvatarDrawable(context, fallbackAvatar).circleCrop();
|
@NonNull
|
||||||
avatar.setBounds(0, 0, targetSize, targetSize);
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user