mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 17:29:32 +01:00
Rewrite fallbackphoto system.
This commit is contained in:
committed by
Greyson Parrelli
parent
d698f74d0b
commit
11557e4815
@@ -21,8 +21,6 @@ import org.signal.core.util.DimensionUnit;
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.components.emoji.EmojiTextView;
|
||||
import org.thoughtcrime.securesms.contacts.avatars.FallbackContactPhoto;
|
||||
import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto;
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
import org.thoughtcrime.securesms.databinding.ConversationHeaderViewBinding;
|
||||
import org.thoughtcrime.securesms.fonts.SignalSymbols;
|
||||
@@ -50,8 +48,6 @@ public class ConversationHeaderView extends ConstraintLayout {
|
||||
inflate(getContext(), R.layout.conversation_header_view, this);
|
||||
|
||||
binding = ConversationHeaderViewBinding.bind(this);
|
||||
|
||||
binding.messageRequestAvatar.setFallbackPhotoProvider(new FallbackPhotoProvider());
|
||||
}
|
||||
|
||||
public void setBadge(@Nullable Recipient recipient) {
|
||||
@@ -197,21 +193,4 @@ public class ConversationHeaderView extends ConstraintLayout {
|
||||
.append(SpanUtil.space(8, DimensionUnit.SP))
|
||||
.append(input);
|
||||
}
|
||||
|
||||
private static final class FallbackPhotoProvider extends Recipient.FallbackPhotoProvider {
|
||||
@Override
|
||||
public @NonNull FallbackContactPhoto getPhotoForRecipientWithoutName() {
|
||||
return new ResourceContactPhoto(R.drawable.ic_profile_64);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull FallbackContactPhoto getPhotoForGroup() {
|
||||
return new ResourceContactPhoto(R.drawable.ic_group_64);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull FallbackContactPhoto getPhotoForLocalNumber() {
|
||||
return new ResourceContactPhoto(R.drawable.ic_note_64);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import android.os.Build
|
||||
import android.text.SpannableStringBuilder
|
||||
import androidx.core.content.pm.ShortcutInfoCompat
|
||||
import androidx.core.graphics.drawable.IconCompat
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.RequestManager
|
||||
import com.bumptech.glide.request.target.CustomTarget
|
||||
@@ -35,6 +36,7 @@ import org.signal.paging.PagingConfig
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.ShortcutLauncherActivity
|
||||
import org.thoughtcrime.securesms.attachments.TombstoneAttachment
|
||||
import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatarDrawable
|
||||
import org.thoughtcrime.securesms.components.emoji.EmojiStrings
|
||||
import org.thoughtcrime.securesms.components.reminder.BubbleOptOutReminder
|
||||
import org.thoughtcrime.securesms.components.reminder.ExpiredBuildReminder
|
||||
@@ -88,7 +90,6 @@ import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
import org.thoughtcrime.securesms.sms.MessageSender
|
||||
import org.thoughtcrime.securesms.sms.MessageSender.PreUploadResult
|
||||
import org.thoughtcrime.securesms.util.BitmapUtil
|
||||
import org.thoughtcrime.securesms.util.DrawableUtil
|
||||
import org.thoughtcrime.securesms.util.MediaUtil
|
||||
import org.thoughtcrime.securesms.util.MessageUtil
|
||||
@@ -489,7 +490,7 @@ class ConversationRepository(
|
||||
}
|
||||
|
||||
fun getRecipientContactPhotoBitmap(context: Context, requestManager: RequestManager, recipient: Recipient): Single<ShortcutInfoCompat> {
|
||||
val fallback = recipient.fallbackContactPhoto.asDrawable(context, recipient.avatarColor, false)
|
||||
val fallback = FallbackAvatarDrawable(context, recipient.getFallbackAvatar())
|
||||
|
||||
return Single
|
||||
.create { emitter ->
|
||||
@@ -618,7 +619,7 @@ class ConversationRepository(
|
||||
* The result of the Glide load to get a user's contact photo. This can then be transformed into
|
||||
* something that the Android system likes via [transformToFinalBitmap]
|
||||
*/
|
||||
sealed interface ContactPhotoResult {
|
||||
private sealed interface ContactPhotoResult {
|
||||
|
||||
companion object {
|
||||
private val SHORTCUT_ICON_SIZE = if (Build.VERSION.SDK_INT >= 26) 72.dp else (48 + 16 * 2).dp
|
||||
@@ -627,7 +628,7 @@ class ConversationRepository(
|
||||
class DrawableResult(private val drawable: Drawable) : ContactPhotoResult {
|
||||
override fun transformToFinalBitmap(): Single<Bitmap> {
|
||||
return Single.create {
|
||||
val bitmap = DrawableUtil.toBitmap(drawable, SHORTCUT_ICON_SIZE, SHORTCUT_ICON_SIZE)
|
||||
val bitmap = DrawableUtil.wrapBitmapForShortcutInfo(drawable.toBitmap(SHORTCUT_ICON_SIZE, SHORTCUT_ICON_SIZE))
|
||||
it.setCancellable {
|
||||
bitmap.recycle()
|
||||
}
|
||||
@@ -639,7 +640,7 @@ class ConversationRepository(
|
||||
class BitmapResult(private val bitmap: Bitmap) : ContactPhotoResult {
|
||||
override fun transformToFinalBitmap(): Single<Bitmap> {
|
||||
return Single.create {
|
||||
val bitmap = BitmapUtil.createScaledBitmap(bitmap, SHORTCUT_ICON_SIZE, SHORTCUT_ICON_SIZE)
|
||||
val bitmap = DrawableUtil.wrapBitmapForShortcutInfo(bitmap)
|
||||
it.setCancellable {
|
||||
bitmap.recycle()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user