mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-23 10:20:25 +01:00
Fix emoji avatar missing after edit.
This commit is contained in:
@@ -30,6 +30,8 @@ import java.util.concurrent.ExecutionException;
|
||||
|
||||
public final class AvatarUtil {
|
||||
|
||||
public static final int UNDEFINED_SIZE = -1;
|
||||
|
||||
private AvatarUtil() {
|
||||
}
|
||||
|
||||
@@ -71,9 +73,13 @@ public final class AvatarUtil {
|
||||
}
|
||||
|
||||
public static void loadIconIntoImageView(@NonNull Recipient recipient, @NonNull ImageView target) {
|
||||
loadIconIntoImageView(recipient, target, -1);
|
||||
}
|
||||
|
||||
public static void loadIconIntoImageView(@NonNull Recipient recipient, @NonNull ImageView target, int requestedSize) {
|
||||
Context context = target.getContext();
|
||||
|
||||
requestCircle(GlideApp.with(context).asDrawable(), context, recipient).into(target);
|
||||
requestCircle(GlideApp.with(context).asDrawable(), context, recipient, requestedSize).into(target);
|
||||
}
|
||||
|
||||
public static Bitmap loadIconBitmapSquareNoCache(@NonNull Context context,
|
||||
@@ -92,7 +98,7 @@ public final class AvatarUtil {
|
||||
@WorkerThread
|
||||
public static IconCompat getIconForNotification(@NonNull Context context, @NonNull Recipient recipient) {
|
||||
try {
|
||||
return IconCompat.createWithBitmap(requestCircle(GlideApp.with(context).asBitmap(), context, recipient).submit().get());
|
||||
return IconCompat.createWithBitmap(requestCircle(GlideApp.with(context).asBitmap(), context, recipient, UNDEFINED_SIZE).submit().get());
|
||||
} catch (ExecutionException | InterruptedException e) {
|
||||
return null;
|
||||
}
|
||||
@@ -114,25 +120,25 @@ public final class AvatarUtil {
|
||||
@WorkerThread
|
||||
public static Bitmap getBitmapForNotification(@NonNull Context context, @NonNull Recipient recipient) {
|
||||
try {
|
||||
return requestCircle(GlideApp.with(context).asBitmap(), context, recipient).submit().get();
|
||||
return requestCircle(GlideApp.with(context).asBitmap(), context, recipient, UNDEFINED_SIZE).submit().get();
|
||||
} catch (ExecutionException | InterruptedException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static <T> GlideRequest<T> requestCircle(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient) {
|
||||
return request(glideRequest, context, recipient).circleCrop();
|
||||
private static <T> GlideRequest<T> requestCircle(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient, int targetSize) {
|
||||
return request(glideRequest, context, recipient, targetSize).circleCrop();
|
||||
}
|
||||
|
||||
private static <T> GlideRequest<T> requestSquare(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient) {
|
||||
return request(glideRequest, context, recipient).centerCrop();
|
||||
return request(glideRequest, context, recipient, UNDEFINED_SIZE).centerCrop();
|
||||
}
|
||||
|
||||
private static <T> GlideRequest<T> request(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient) {
|
||||
return request(glideRequest, context, recipient, true);
|
||||
private static <T> GlideRequest<T> request(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient, int targetSize) {
|
||||
return request(glideRequest, context, recipient, true, targetSize);
|
||||
}
|
||||
|
||||
private static <T> GlideRequest<T> request(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient, boolean loadSelf) {
|
||||
private static <T> GlideRequest<T> request(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient, boolean loadSelf, int targetSize) {
|
||||
final ContactPhoto photo;
|
||||
if (Recipient.self().equals(recipient) && loadSelf) {
|
||||
photo = new ProfileContactPhoto(recipient, recipient.getProfileAvatar());
|
||||
@@ -141,7 +147,7 @@ public final class AvatarUtil {
|
||||
}
|
||||
|
||||
final GlideRequest<T> request = glideRequest.load(photo)
|
||||
.error(getFallback(context, recipient))
|
||||
.error(getFallback(context, recipient, targetSize))
|
||||
.diskCacheStrategy(DiskCacheStrategy.ALL);
|
||||
|
||||
if (recipient.shouldBlurAvatar()) {
|
||||
@@ -151,9 +157,9 @@ public final class AvatarUtil {
|
||||
}
|
||||
}
|
||||
|
||||
private static Drawable getFallback(@NonNull Context context, @NonNull Recipient recipient) {
|
||||
private static Drawable getFallback(@NonNull Context context, @NonNull Recipient recipient, int targetSize) {
|
||||
String name = Optional.fromNullable(recipient.getDisplayName(context)).or("");
|
||||
|
||||
return new GeneratedContactPhoto(name, R.drawable.ic_profile_outline_40).asDrawable(context, recipient.getAvatarColor());
|
||||
return new GeneratedContactPhoto(name, R.drawable.ic_profile_outline_40, targetSize).asDrawable(context, recipient.getAvatarColor());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -280,6 +280,10 @@ public final class ViewUtil {
|
||||
view.requestLayout();
|
||||
}
|
||||
|
||||
public static int getWidth(@NonNull View view) {
|
||||
return view.getLayoutParams().width;
|
||||
}
|
||||
|
||||
public static void setPaddingTop(@NonNull View view, int padding) {
|
||||
view.setPadding(view.getPaddingLeft(), padding, view.getPaddingRight(), view.getPaddingBottom());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user