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 2e2c671fcf..5c8fe6acd6 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 @@ -1,6 +1,6 @@ /* * Infomaniak Mail - Android - * Copyright (C) 2023-2024 Infomaniak Network SA + * Copyright (C) 2023-2025 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 @@ -78,7 +78,7 @@ class AvatarNameEmailView @JvmOverloads constructor( } fun setMergedContact(mergedContact: MergedContact) = with(binding) { - userAvatar.loadAvatar(mergedContact) + userAvatar.loadRawMergedContactAvatar(mergedContact) setNameAndEmail(mergedContact) } diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListFragment.kt index 8c1d49a204..bd2f3912b2 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListFragment.kt @@ -516,7 +516,7 @@ class ThreadListFragment : TwoPaneFragment() { } private fun setupUserAvatar() { - AccountUtils.currentUser?.let(binding.userAvatar::loadAvatar) + AccountUtils.currentUser?.let(binding.userAvatar::loadUserAvatar) } private fun setupUnreadCountChip() = with(binding) { 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 cd79eb94ca..595fccc2d0 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 @@ -369,7 +369,7 @@ class ThreadAdapter( } if (message.isDraft) { - userAvatar.loadAvatar(AccountUtils.currentUser!!) + userAvatar.loadUserAvatar(AccountUtils.currentUser!!) expeditorName.apply { text = context.getString(R.string.messageIsDraftOption) setTextAppearance(R.style.BodyMedium_Error) diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/user/SwitchUserAdapter.kt b/app/src/main/java/com/infomaniak/mail/ui/main/user/SwitchUserAdapter.kt index 345de99d69..133a56601c 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/user/SwitchUserAdapter.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/user/SwitchUserAdapter.kt @@ -1,6 +1,6 @@ /* * Infomaniak Mail - Android - * Copyright (C) 2022-2024 Infomaniak Network SA + * Copyright (C) 2022-2025 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 @@ -52,7 +52,7 @@ class SwitchUserAdapter( override fun onBindViewHolder(holder: SwitchUserAccountViewHolder, position: Int) = with(holder.binding) { val account = accounts[position] - userAvatar.loadAvatar(account) + userAvatar.loadUserAvatar(account) userName.text = account.displayName userMailAddress.text = account.email updateSelectedUi(position) 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 dfa1d6bdba..787c799f91 100644 --- a/app/src/main/java/com/infomaniak/mail/views/AvatarView.kt +++ b/app/src/main/java/com/infomaniak/mail/views/AvatarView.kt @@ -147,7 +147,7 @@ class AvatarView @JvmOverloads constructor( binding.root.isFocusable = focusable } - fun loadAvatar(user: User) = with(binding.avatarImage) { + fun loadUserAvatar(user: User) = with(binding.avatarImage) { contentDescription = user.email loadAvatar( backgroundColor = context.getBackgroundColorBasedOnId(user.id, R.array.AvatarColors), @@ -164,8 +164,17 @@ class AvatarView @JvmOverloads constructor( loadAvatarByDisplayType(avatarDisplayType, correspondent, bimi, contactsFromViewModel) } - fun loadAvatar(mergedContact: MergedContact) { - binding.avatarImage.baseLoadAvatar(mergedContact) + private fun updateStateAndLoadUserAvatar(user: User, correspondent: Correspondent, bimi: Bimi) { + state.update(correspondent, bimi) + loadUserAvatar(user) + } + + fun loadRawMergedContactAvatar(mergedContact: MergedContact) { + if (mergedContact.shouldDisplayUserAvatar()) { + this@AvatarView.loadUserAvatar(AccountUtils.currentUser!!) + } else { + binding.avatarImage.baseLoadAvatar(mergedContact) + } } fun loadUnknownUserAvatar() { @@ -196,10 +205,8 @@ class AvatarView @JvmOverloads constructor( ) { when (avatarDisplayType) { AvatarDisplayType.UNKNOWN_CORRESPONDENT -> loadUnknownUserAvatar() - AvatarDisplayType.USER_AVATAR -> { - state.update(correspondent, bimi) - AccountUtils.currentUser?.let { loadAvatar(user = it) } - } + AvatarDisplayType.USER_AVATAR -> + AccountUtils.currentUser?.let { updateStateAndLoadUserAvatar(user = it, correspondent!!, bimi!!) } AvatarDisplayType.CUSTOM_AVATAR, AvatarDisplayType.INITIALS -> loadAvatarUsingDictionary(correspondent!!, contacts, bimi) AvatarDisplayType.BIMI -> loadBimiAvatar(correspondent!!, bimi!!) @@ -234,17 +241,13 @@ class AvatarView @JvmOverloads constructor( } private fun ImageView.baseLoadAvatar(correspondent: Correspondent) { - if (correspondent.shouldDisplayUserAvatar()) { - this@AvatarView.loadAvatar(AccountUtils.currentUser!!) - } else { - loadAvatar( - backgroundColor = context.getBackgroundColorBasedOnId(correspondent.email.hashCode(), R.array.AvatarColors), - avatarUrl = (correspondent as? MergedContact)?.avatar, - initials = correspondent.initials, - imageLoader = context.imageLoader, - initialsColor = context.getColor(R.color.onColorfulBackground), - ) - } + loadAvatar( + backgroundColor = context.getBackgroundColorBasedOnId(correspondent.email.hashCode(), R.array.AvatarColors), + avatarUrl = (correspondent as? MergedContact)?.avatar, + initials = correspondent.initials, + imageLoader = context.imageLoader, + initialsColor = context.getColor(R.color.onColorfulBackground), + ) } private data class State(