Skip to content

Commit

Permalink
Apply suggestion from code review
Browse files Browse the repository at this point in the history
Apply suggestion from code review
  • Loading branch information
NicolasBourdin88 committed Jun 18, 2024
1 parent 10394fe commit b2aaf22
Show file tree
Hide file tree
Showing 9 changed files with 26 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/java/com/infomaniak/mail/data/models/Bimi.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<DetailedRecipientViewHolder>() {

private var recipients = emptyList<Recipient>()

private var bimi: Bimi? = null

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DetailedRecipientViewHolder {
return DetailedRecipientViewHolder(ItemDetailedContactBinding.inflate(LayoutInflater.from(parent.context), parent, false))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ class ThreadAdapter(
shouldLoadDistantResources,
threadAdapterCallbacks?.onContactClicked,
threadAdapterCallbacks?.onAttachmentClicked,
threadAdapterCallbacks?.onAttachmentOptionsClicked
threadAdapterCallbacks?.onAttachmentOptionsClicked,
)
} else {
SuperCollapsedBlockViewHolder(ItemSuperCollapsedBlockBinding.inflate(layoutInflater, parent, false))
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 ->
Expand Down
17 changes: 9 additions & 8 deletions app/src/main/java/com/infomaniak/mail/views/AvatarView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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<MergedContactDictionary> { contacts ->
currentCorrespondent?.let { correspondent ->
if (!isBimiShow) loadAvatarUsingDictionary(correspondent, contacts)
if (!isBimiShown) loadAvatarUsingDictionary(correspondent, contacts)
}
}

Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -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)
}
}
}
2 changes: 1 addition & 1 deletion app/src/main/res/drawable/ic_certified.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Infomaniak Mail - Android
~ Copyright (C) 2023-2024 Infomaniak Network SA
~ Copyright (C) 2024 Infomaniak Network SA
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
Expand Down

0 comments on commit b2aaf22

Please sign in to comment.