From 8b4d2f6dfd1f5d029a9483696d0cc91a14bf2314 Mon Sep 17 00:00:00 2001 From: NicolasBourdin88 Date: Mon, 17 Jun 2024 08:59:20 +0200 Subject: [PATCH] Apply suggestion from code review Apply suggestion from code review --- .../infomaniak/mail/data/cache/RealmDatabase.kt | 6 +++++- .../com/infomaniak/mail/data/models/Bimi.kt | 3 +++ .../mail/ui/main/AvatarNameEmailView.kt | 2 +- .../mail/ui/main/folder/ThreadListAdapter.kt | 2 +- .../ui/main/thread/DetailedRecipientAdapter.kt | 4 +++- .../mail/ui/main/thread/ThreadAdapter.kt | 4 ++-- .../mail/ui/main/thread/ThreadFragment.kt | 5 +---- .../com/infomaniak/mail/views/AvatarView.kt | 17 +++++++++-------- app/src/main/res/drawable/ic_certified.xml | 2 +- 9 files changed, 26 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/infomaniak/mail/data/cache/RealmDatabase.kt b/app/src/main/java/com/infomaniak/mail/data/cache/RealmDatabase.kt index f3507804ee1..b8152ce094b 100644 --- a/app/src/main/java/com/infomaniak/mail/data/cache/RealmDatabase.kt +++ b/app/src/main/java/com/infomaniak/mail/data/cache/RealmDatabase.kt @@ -18,7 +18,11 @@ package com.infomaniak.mail.data.cache import android.content.Context -import com.infomaniak.mail.data.models.* +import com.infomaniak.mail.data.models.AppSettings +import com.infomaniak.mail.data.models.Attachment +import com.infomaniak.mail.data.models.Folder +import com.infomaniak.mail.data.models.Quotas +import com.infomaniak.mail.data.models.Bimi import com.infomaniak.mail.data.models.addressBook.AddressBook import com.infomaniak.mail.data.models.calendar.Attendee import com.infomaniak.mail.data.models.calendar.CalendarEvent diff --git a/app/src/main/java/com/infomaniak/mail/data/models/Bimi.kt b/app/src/main/java/com/infomaniak/mail/data/models/Bimi.kt index 07484287e7b..8b318e0571c 100644 --- a/app/src/main/java/com/infomaniak/mail/data/models/Bimi.kt +++ b/app/src/main/java/com/infomaniak/mail/data/models/Bimi.kt @@ -28,10 +28,13 @@ import kotlinx.serialization.Serializable @Parcelize @Serializable class Bimi() : EmbeddedRealmObject, Parcelable { + + //region Remote data @SerialName("svg_content") var svgContentUrl: String? = null @SerialName("is_certified") var isCertified: Boolean = false + //endregion constructor(svgContentUrl: String, isCertified: Boolean) : this() { this.svgContentUrl = svgContentUrl diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/AvatarNameEmailView.kt b/app/src/main/java/com/infomaniak/mail/ui/main/AvatarNameEmailView.kt index 293373a8ab5..c2a3b268390 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/AvatarNameEmailView.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/AvatarNameEmailView.kt @@ -89,7 +89,7 @@ class AvatarNameEmailView @JvmOverloads constructor( private fun ViewAvatarNameEmailBinding.setNameAndEmail( correspondent: Correspondent, - isCorrespondentCertified: Boolean = false + isCorrespondentCertified: Boolean = false, ) { val filledSingleField = fillInUserNameAndEmail(correspondent, userName, userEmail, ignoreIsMe = !processNameAndEmail) if (displayAsAttendee) { diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListAdapter.kt b/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListAdapter.kt index 35257524a75..10670ab811b 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListAdapter.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListAdapter.kt @@ -402,7 +402,7 @@ class ThreadListAdapter @Inject constructor( private fun CardviewThreadItemBinding.displayAvatar(thread: Thread) { val (recipient, bimi) = thread.computeAvatarRecipient() - if (bimi != null && bimi.isCertified) { + if (bimi?.isCertified == true) { expeditorAvatar.loadBimiAvatar(ApiRoutes.bimi(bimi.svgContentUrl.toString()), recipient) } else { expeditorAvatar.loadAvatar(recipient) diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/thread/DetailedRecipientAdapter.kt b/app/src/main/java/com/infomaniak/mail/ui/main/thread/DetailedRecipientAdapter.kt index 251bb377054..5168f58c562 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/thread/DetailedRecipientAdapter.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/thread/DetailedRecipientAdapter.kt @@ -30,11 +30,13 @@ import com.infomaniak.mail.ui.main.thread.DetailedRecipientAdapter.DetailedRecip import com.infomaniak.mail.utils.UiUtils.fillInUserNameAndEmail class DetailedRecipientAdapter( - private val onContactClicked: ((contact: Recipient, bimi: Bimi?) -> Unit)? + private val onContactClicked: ((contact: Recipient, bimi: Bimi?) -> Unit)?, ) : Adapter() { private var recipients = emptyList() + private var bimi: Bimi? = null + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DetailedRecipientViewHolder { return DetailedRecipientViewHolder(ItemDetailedContactBinding.inflate(LayoutInflater.from(parent.context), parent, false)) } diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadAdapter.kt b/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadAdapter.kt index e59dd70c2d8..9dc6ea545e4 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadAdapter.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadAdapter.kt @@ -122,7 +122,7 @@ class ThreadAdapter( shouldLoadDistantResources, threadAdapterCallbacks?.onContactClicked, threadAdapterCallbacks?.onAttachmentClicked, - threadAdapterCallbacks?.onAttachmentOptionsClicked + threadAdapterCallbacks?.onAttachmentOptionsClicked, ) } else { SuperCollapsedBlockViewHolder(ItemSuperCollapsedBlockBinding.inflate(layoutInflater, parent, false)) @@ -719,7 +719,7 @@ class ThreadAdapter( private val shouldLoadDistantResources: Boolean, onContactClicked: ((contact: Recipient, bimi: Bimi?) -> Unit)?, onAttachmentClicked: ((attachment: Attachment) -> Unit)?, - onAttachmentOptionsClicked: ((attachment: Attachment) -> Unit)? + onAttachmentOptionsClicked: ((attachment: Attachment) -> Unit)?, ) : ThreadAdapterViewHolder(binding) { val fromAdapter = DetailedRecipientAdapter(onContactClicked) diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadFragment.kt index a0600aca518..7283fee3006 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadFragment.kt @@ -227,10 +227,7 @@ class ThreadFragment : Fragment() { onContactClicked = { recipient, bimi -> safeNavigate( resId = R.id.detailedContactBottomSheetDialog, - args = DetailedContactBottomSheetDialogArgs( - recipient = recipient, - bimi - ).toBundle(), + args = DetailedContactBottomSheetDialogArgs(recipient, bimi).toBundle(), ) }, onDraftClicked = { message -> diff --git a/app/src/main/java/com/infomaniak/mail/views/AvatarView.kt b/app/src/main/java/com/infomaniak/mail/views/AvatarView.kt index dee821b40cc..814e5d12e4c 100644 --- a/app/src/main/java/com/infomaniak/mail/views/AvatarView.kt +++ b/app/src/main/java/com/infomaniak/mail/views/AvatarView.kt @@ -58,11 +58,11 @@ class AvatarView @JvmOverloads constructor( private val binding by lazy { ViewAvatarBinding.inflate(LayoutInflater.from(context), this, true) } private var currentCorrespondent: Correspondent? = null - private var isBimiShow: Boolean = false + private var isBimiShown: Boolean = false private val mergedContactObserver = Observer { contacts -> currentCorrespondent?.let { correspondent -> - if (!isBimiShow) loadAvatarUsingDictionary(correspondent, contacts) + if (!isBimiShown) loadAvatarUsingDictionary(correspondent, contacts) } } @@ -149,15 +149,15 @@ class AvatarView @JvmOverloads constructor( binding.avatarImage.load(R.drawable.ic_unknown_user_avatar) } - fun loadBimiAvatar(urlBimi: String, correspondent: Correspondent?) = with(binding.avatarImage) { + fun loadBimiAvatar(bimiUrl: String, correspondent: Correspondent?) = with(binding.avatarImage) { contentDescription = correspondent?.email.orEmpty() - isBimiShow = urlBimi.isNotEmpty() + isBimiShown = bimiUrl.isNotEmpty() loadAvatar( backgroundColor = context.getBackgroundColorBasedOnId( correspondent?.email.orEmpty().hashCode(), - R.array.AvatarColors + R.array.AvatarColors, ), - avatarUrl = urlBimi, + avatarUrl = bimiUrl, initials = correspondent?.initials.orEmpty(), imageLoader = svgImageLoader, initialsColor = context.getColor(R.color.onColorfulBackground), @@ -193,10 +193,11 @@ class AvatarView @JvmOverloads constructor( } fun loadAvatar(correspondent: Correspondent?, bimi: Bimi?) { - if (bimi == null || !bimi.isCertified) { + val svgContentUrl = bimi?.svgContentUrl + if (bimi == null || !bimi.isCertified || svgContentUrl.isNullOrEmpty()) { loadAvatar(correspondent) } else { - loadBimiAvatar(ApiRoutes.bimi(bimi.svgContentUrl.orEmpty()), correspondent) + loadBimiAvatar(ApiRoutes.bimi(svgContentUrl), correspondent) } } } diff --git a/app/src/main/res/drawable/ic_certified.xml b/app/src/main/res/drawable/ic_certified.xml index 5944af3f9d2..3d0defd282a 100644 --- a/app/src/main/res/drawable/ic_certified.xml +++ b/app/src/main/res/drawable/ic_certified.xml @@ -1,6 +1,6 @@