Improve AvatarImage to update on recipient changes.

This commit is contained in:
Sagar
2025-04-04 01:48:05 +05:30
committed by Michelle Tang
parent 8a0e260061
commit d65954c26f
2 changed files with 24 additions and 9 deletions

View File

@@ -9,12 +9,18 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.runtime.Composable
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalInspectionMode
import androidx.compose.ui.viewinterop.AndroidView
import androidx.lifecycle.map
import org.thoughtcrime.securesms.components.AvatarImageView
import org.thoughtcrime.securesms.database.model.ProfileAvatarFileDetails
import org.thoughtcrime.securesms.profiles.AvatarHelper
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.util.NameUtil
@Composable
fun AvatarImage(
@@ -22,6 +28,9 @@ fun AvatarImage(
modifier: Modifier = Modifier,
useProfile: Boolean = true
) {
val context = LocalContext.current
val state = recipient.live().liveData.map { AvatarImageState(NameUtil.getAbbreviation(it.getDisplayName(context)), it, AvatarHelper.getAvatarFileDetails(context, it.id)) }.observeAsState().value ?: return
if (LocalInspectionMode.current) {
Spacer(
modifier = modifier
@@ -33,10 +42,16 @@ fun AvatarImage(
modifier = modifier.background(color = Color.Transparent, shape = CircleShape)
) {
if (useProfile) {
it.setAvatarUsingProfile(recipient)
it.setAvatarUsingProfile(state.self)
} else {
it.setAvatar(recipient)
it.setAvatar(state.self)
}
}
}
}
private data class AvatarImageState(
val displayName: String?,
val self: Recipient,
val avatarFileDetails: ProfileAvatarFileDetails
)