From 1262f80a1f0d5357478f689aba52f59f6a538710 Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Fri, 28 May 2021 16:09:15 +1000 Subject: [PATCH] Clean up ProfilePictureView --- .../conversation/ConversationItem.java | 13 ++- .../loki/views/MentionCandidateView.kt | 1 - .../loki/views/ProfilePictureView.kt | 69 +++++--------- .../profile_picture_view_large_background.xml | 2 - .../profile_picture_view_large_foreground.xml | 2 - ...profile_picture_view_medium_background.xml | 2 - ...profile_picture_view_medium_foreground.xml | 2 - ...ile_picture_view_rss_medium_background.xml | 2 - .../profile_picture_view_small_background.xml | 2 - .../main/res/layout/view_profile_picture.xml | 89 ++++--------------- 10 files changed, 44 insertions(+), 140 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index c089feed6..344dfc93e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -45,9 +45,11 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; + import androidx.annotation.DimenRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; + import com.annimon.stream.Stream; import org.session.libsession.messaging.contacts.Contact; @@ -58,17 +60,16 @@ import org.session.libsession.messaging.open_groups.OpenGroupV2; import org.session.libsession.messaging.sending_receiving.attachments.AttachmentTransferProgress; import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment; import org.session.libsession.messaging.sending_receiving.link_preview.LinkPreview; -import org.session.libsession.utilities.recipients.Recipient; -import org.session.libsession.utilities.recipients.RecipientModifiedListener; import org.session.libsession.messaging.utilities.UpdateMessageData; -import org.session.libsession.utilities.GroupUtil; +import org.session.libsession.utilities.Stub; import org.session.libsession.utilities.TextSecurePreferences; import org.session.libsession.utilities.ThemeUtil; import org.session.libsession.utilities.Util; import org.session.libsession.utilities.ViewUtil; -import org.session.libsession.utilities.Stub; -import org.session.libsignal.utilities.guava.Optional; +import org.session.libsession.utilities.recipients.Recipient; +import org.session.libsession.utilities.recipients.RecipientModifiedListener; import org.session.libsignal.utilities.Log; +import org.session.libsignal.utilities.guava.Optional; import org.thoughtcrime.securesms.BindableConversationItem; import org.thoughtcrime.securesms.MediaPreviewActivity; import org.thoughtcrime.securesms.MessageDetailsActivity; @@ -88,7 +89,6 @@ import org.thoughtcrime.securesms.database.model.MmsMessageRecord; import org.thoughtcrime.securesms.database.model.Quote; import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil; import org.thoughtcrime.securesms.loki.utilities.MentionUtilities; -import org.thoughtcrime.securesms.loki.utilities.OpenGroupUtilities; import org.thoughtcrime.securesms.loki.views.MessageAudioView; import org.thoughtcrime.securesms.loki.views.OpenGroupInvitationView; import org.thoughtcrime.securesms.loki.views.ProfilePictureView; @@ -759,7 +759,6 @@ public class ConversationItem extends LinearLayout String displayName = recipient.getName(); profilePictureView.setDisplayName(displayName); profilePictureView.setAdditionalPublicKey(null); - profilePictureView.setRSSFeed(false); profilePictureView.setGlide(glideRequests); profilePictureView.update(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/views/MentionCandidateView.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/views/MentionCandidateView.kt index 0a748c98f..d355597bf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/views/MentionCandidateView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/views/MentionCandidateView.kt @@ -34,7 +34,6 @@ class MentionCandidateView(context: Context, attrs: AttributeSet?, defStyleAttr: profilePictureView.publicKey = mentionCandidate.publicKey profilePictureView.displayName = mentionCandidate.displayName profilePictureView.additionalPublicKey = null - profilePictureView.isRSSFeed = false profilePictureView.glide = glide!! profilePictureView.update() if (openGroupServer != null && openGroupRoom != null) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/views/ProfilePictureView.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/views/ProfilePictureView.kt index e2de25ca9..3482088dd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/views/ProfilePictureView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/views/ProfilePictureView.kt @@ -20,17 +20,15 @@ import org.thoughtcrime.securesms.database.DatabaseFactory import org.thoughtcrime.securesms.loki.utilities.AvatarPlaceholderGenerator import org.thoughtcrime.securesms.mms.GlideRequests -// TODO: Look into a better way of handling different sizes. Maybe an enum (with associated values) encapsulating the different modes? - class ProfilePictureView : RelativeLayout { lateinit var glide: GlideRequests var publicKey: String? = null var displayName: String? = null var additionalPublicKey: String? = null var additionalDisplayName: String? = null - var isRSSFeed = false var isLarge = false - private val profilePicturesCached = mutableMapOf() + + private val profilePicturesCache = mutableMapOf() // region Lifecycle constructor(context: Context) : super(context) { @@ -79,15 +77,11 @@ class ProfilePictureView : RelativeLayout { val apk = randomUsers.getOrNull(1) ?: "" additionalPublicKey = apk additionalDisplayName = getUserDisplayName(apk) - isRSSFeed = recipient.name == "Loki News" || - recipient.name == "Session Updates" || - recipient.name == "Session Public Chat" } else { val publicKey = recipient.address.toString() this.publicKey = publicKey displayName = getUserDisplayName(publicKey) additionalPublicKey = null - isRSSFeed = false } update() } @@ -95,68 +89,47 @@ class ProfilePictureView : RelativeLayout { fun update() { val publicKey = publicKey ?: return val additionalPublicKey = additionalPublicKey - doubleModeImageViewContainer.visibility = if (additionalPublicKey != null && !isRSSFeed) { - setProfilePictureIfNeeded( - doubleModeImageView1, - publicKey, - displayName, - R.dimen.small_profile_picture_size) - setProfilePictureIfNeeded( - doubleModeImageView2, - additionalPublicKey, - additionalDisplayName, - R.dimen.small_profile_picture_size) - View.VISIBLE + if (additionalPublicKey != null) { + setProfilePictureIfNeeded(doubleModeImageView1, publicKey, displayName, R.dimen.small_profile_picture_size) + setProfilePictureIfNeeded(doubleModeImageView2, additionalPublicKey, additionalDisplayName, R.dimen.small_profile_picture_size) + doubleModeImageViewContainer.visibility = View.VISIBLE } else { glide.clear(doubleModeImageView1) glide.clear(doubleModeImageView2) - View.INVISIBLE + doubleModeImageViewContainer.visibility = View.INVISIBLE } - singleModeImageViewContainer.visibility = if (additionalPublicKey == null && !isRSSFeed && !isLarge) { - setProfilePictureIfNeeded( - singleModeImageView, - publicKey, - displayName, - R.dimen.medium_profile_picture_size) - View.VISIBLE + if (additionalPublicKey == null && !isLarge) { + setProfilePictureIfNeeded(singleModeImageView, publicKey, displayName, R.dimen.medium_profile_picture_size) + singleModeImageView.visibility = View.VISIBLE } else { glide.clear(singleModeImageView) - View.INVISIBLE + singleModeImageView.visibility = View.INVISIBLE } - largeSingleModeImageViewContainer.visibility = if (additionalPublicKey == null && !isRSSFeed && isLarge) { - setProfilePictureIfNeeded( - largeSingleModeImageView, - publicKey, - displayName, - R.dimen.large_profile_picture_size) - View.VISIBLE + if (additionalPublicKey == null && isLarge) { + setProfilePictureIfNeeded(largeSingleModeImageView, publicKey, displayName, R.dimen.large_profile_picture_size) + largeSingleModeImageView.visibility = View.VISIBLE } else { glide.clear(largeSingleModeImageView) - View.INVISIBLE + largeSingleModeImageView.visibility = View.INVISIBLE } - rssImageView.visibility = if (isRSSFeed) View.VISIBLE else View.INVISIBLE } private fun setProfilePictureIfNeeded(imageView: ImageView, publicKey: String, displayName: String?, @DimenRes sizeResId: Int) { if (publicKey.isNotEmpty()) { val recipient = Recipient.from(context, Address.fromSerialized(publicKey), false) - if (profilePicturesCached.containsKey(publicKey) && profilePicturesCached[publicKey] == recipient.profileAvatar) return + if (profilePicturesCache.containsKey(publicKey) && profilePicturesCache[publicKey] == recipient.profileAvatar) return val signalProfilePicture = recipient.contactPhoto val avatar = (signalProfilePicture as? ProfileContactPhoto)?.avatarObject if (signalProfilePicture != null && avatar != "0" && avatar != "") { glide.clear(imageView) glide.load(signalProfilePicture).diskCacheStrategy(DiskCacheStrategy.AUTOMATIC).circleCrop().into(imageView) - profilePicturesCached[publicKey] = recipient.profileAvatar + profilePicturesCache[publicKey] = recipient.profileAvatar } else { val sizeInPX = resources.getDimensionPixelSize(sizeResId) glide.clear(imageView) - glide.load(AvatarPlaceholderGenerator.generate( - context, - sizeInPX, - publicKey, - displayName - )).diskCacheStrategy(DiskCacheStrategy.ALL).circleCrop().into(imageView) - profilePicturesCached[publicKey] = recipient.profileAvatar + glide.load(AvatarPlaceholderGenerator.generate(context, sizeInPX, publicKey, displayName)) + .diskCacheStrategy(DiskCacheStrategy.ALL).circleCrop().into(imageView) + profilePicturesCache[publicKey] = recipient.profileAvatar } } else { imageView.setImageDrawable(null) @@ -164,7 +137,7 @@ class ProfilePictureView : RelativeLayout { } fun recycle() { - profilePicturesCached.clear() + profilePicturesCache.clear() } // endregion } diff --git a/app/src/main/res/drawable/profile_picture_view_large_background.xml b/app/src/main/res/drawable/profile_picture_view_large_background.xml index c5f6d91a0..278d70901 100644 --- a/app/src/main/res/drawable/profile_picture_view_large_background.xml +++ b/app/src/main/res/drawable/profile_picture_view_large_background.xml @@ -6,6 +6,4 @@ - - \ No newline at end of file diff --git a/app/src/main/res/drawable/profile_picture_view_large_foreground.xml b/app/src/main/res/drawable/profile_picture_view_large_foreground.xml index 7d6f94a2b..e73b68d16 100644 --- a/app/src/main/res/drawable/profile_picture_view_large_foreground.xml +++ b/app/src/main/res/drawable/profile_picture_view_large_foreground.xml @@ -6,6 +6,4 @@ - - \ No newline at end of file diff --git a/app/src/main/res/drawable/profile_picture_view_medium_background.xml b/app/src/main/res/drawable/profile_picture_view_medium_background.xml index 2b379dec4..37c5ce3e7 100644 --- a/app/src/main/res/drawable/profile_picture_view_medium_background.xml +++ b/app/src/main/res/drawable/profile_picture_view_medium_background.xml @@ -6,6 +6,4 @@ - - \ No newline at end of file diff --git a/app/src/main/res/drawable/profile_picture_view_medium_foreground.xml b/app/src/main/res/drawable/profile_picture_view_medium_foreground.xml index e05dd6aab..808be8d0e 100644 --- a/app/src/main/res/drawable/profile_picture_view_medium_foreground.xml +++ b/app/src/main/res/drawable/profile_picture_view_medium_foreground.xml @@ -6,6 +6,4 @@ - - \ No newline at end of file diff --git a/app/src/main/res/drawable/profile_picture_view_rss_medium_background.xml b/app/src/main/res/drawable/profile_picture_view_rss_medium_background.xml index 9496e53ed..a12f21fce 100644 --- a/app/src/main/res/drawable/profile_picture_view_rss_medium_background.xml +++ b/app/src/main/res/drawable/profile_picture_view_rss_medium_background.xml @@ -6,6 +6,4 @@ - - \ No newline at end of file diff --git a/app/src/main/res/drawable/profile_picture_view_small_background.xml b/app/src/main/res/drawable/profile_picture_view_small_background.xml index d01f12f77..223592411 100644 --- a/app/src/main/res/drawable/profile_picture_view_small_background.xml +++ b/app/src/main/res/drawable/profile_picture_view_small_background.xml @@ -6,6 +6,4 @@ - - \ No newline at end of file diff --git a/app/src/main/res/layout/view_profile_picture.xml b/app/src/main/res/layout/view_profile_picture.xml index ba9c55df0..513d84505 100644 --- a/app/src/main/res/layout/view_profile_picture.xml +++ b/app/src/main/res/layout/view_profile_picture.xml @@ -1,97 +1,42 @@ - + android:layout_height="wrap_content"> - + android:layout_alignParentTop="true" + android:background="@drawable/profile_picture_view_small_background" /> - - - - - - - - - - - - - - - - - - - - - + android:layout_alignParentBottom="true" + android:background="@drawable/profile_picture_view_small_background" /> + android:background="@drawable/profile_picture_view_medium_background" /> - - - - - - - + android:layout_height="@dimen/large_profile_picture_size" + android:background="@drawable/profile_picture_view_large_background" /> \ No newline at end of file