Browse Source

Now that we use a cache, there is no need to provide AvatarColors to the Avatar composable.

pull/1264/head
Benoit Marty 1 year ago committed by Benoit Marty
parent
commit
72497b584d
  1. 18
      features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInView.kt
  2. 2
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt
  3. 6
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/Avatar.kt
  4. 4
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/UserAvatarPreview.kt

18
features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInView.kt

@ -42,8 +42,6 @@ import io.element.android.features.ftue.impl.R
import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule
import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule
import io.element.android.libraries.designsystem.atomic.pages.HeaderFooterPage import io.element.android.libraries.designsystem.atomic.pages.HeaderFooterPage
import io.element.android.libraries.designsystem.colors.AvatarColors
import io.element.android.libraries.designsystem.colors.AvatarColorsProvider
import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarSize
@ -67,7 +65,7 @@ fun NotificationsOptInView(
modifier = modifier modifier = modifier
.systemBarsPadding() .systemBarsPadding()
.fillMaxSize(), .fillMaxSize(),
header = { NotificationsOptInHeader(modifier = Modifier.padding(top = 60.dp, bottom = 12.dp),) }, header = { NotificationsOptInHeader(modifier = Modifier.padding(top = 60.dp, bottom = 12.dp)) },
footer = { NotificationsOptInFooter(state) }, footer = { NotificationsOptInFooter(state) },
) { ) {
NotificationsOptInContent(modifier = Modifier.fillMaxWidth()) NotificationsOptInContent(modifier = Modifier.fillMaxWidth())
@ -119,21 +117,21 @@ private fun NotificationsOptInContent(
) { ) {
NotificationRow( NotificationRow(
avatarLetter = "M", avatarLetter = "M",
avatarColors = AvatarColorsProvider.provide("5", ElementTheme.isLightTheme), avatarColorsId = "5",
firstRowPercent = 1f, firstRowPercent = 1f,
secondRowPercent = 0.4f secondRowPercent = 0.4f
) )
NotificationRow( NotificationRow(
avatarLetter = "A", avatarLetter = "A",
avatarColors = AvatarColorsProvider.provide("1", ElementTheme.isLightTheme), avatarColorsId = "1",
firstRowPercent = 1f, firstRowPercent = 1f,
secondRowPercent = 1f secondRowPercent = 1f
) )
NotificationRow( NotificationRow(
avatarLetter = "T", avatarLetter = "T",
avatarColors = AvatarColorsProvider.provide("4", ElementTheme.isLightTheme), avatarColorsId = "4",
firstRowPercent = 0.65f, firstRowPercent = 0.65f,
secondRowPercent = 0f secondRowPercent = 0f
) )
@ -144,7 +142,7 @@ private fun NotificationsOptInContent(
@Composable @Composable
private fun NotificationRow( private fun NotificationRow(
avatarLetter: String, avatarLetter: String,
avatarColors: AvatarColors, avatarColorsId: String,
firstRowPercent: Float, firstRowPercent: Float,
secondRowPercent: Float, secondRowPercent: Float,
modifier: Modifier = Modifier modifier: Modifier = Modifier
@ -161,8 +159,7 @@ private fun NotificationRow(
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Avatar( Avatar(
avatarData = AvatarData(id = "", name = avatarLetter, size = AvatarSize.NotificationsOptIn), avatarData = AvatarData(id = avatarColorsId, name = avatarLetter, size = AvatarSize.NotificationsOptIn),
initialAvatarColors = avatarColors,
) )
Column(Modifier.weight(1f), verticalArrangement = Arrangement.spacedBy(12.dp)) { Column(Modifier.weight(1f), verticalArrangement = Arrangement.spacedBy(12.dp)) {
Box( Box(
@ -174,7 +171,8 @@ private fun NotificationRow(
) )
if (secondRowPercent > 0f) { if (secondRowPercent > 0f) {
Box( Box(
modifier = Modifier.clip(CircleShape) modifier = Modifier
.clip(CircleShape)
.fillMaxWidth(secondRowPercent) .fillMaxWidth(secondRowPercent)
.height(10.dp) .height(10.dp)
.background(ElementTheme.colors.borderInteractiveSecondary) .background(ElementTheme.colors.borderInteractiveSecondary)

2
features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt

@ -346,7 +346,7 @@ private fun MessageSenderInformation(
} }
// Content // Content
Row { Row {
Avatar(senderAvatar, initialAvatarColors = avatarColors) Avatar(senderAvatar)
Spacer(modifier = Modifier.width(4.dp)) Spacer(modifier = Modifier.width(4.dp))
Text( Text(
text = sender, text = sender,

6
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/Avatar.kt

@ -32,7 +32,6 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import coil.compose.AsyncImage import coil.compose.AsyncImage
import io.element.android.libraries.designsystem.colors.AvatarColors
import io.element.android.libraries.designsystem.colors.AvatarColorsProvider import io.element.android.libraries.designsystem.colors.AvatarColorsProvider
import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
@ -46,17 +45,14 @@ import timber.log.Timber
fun Avatar( fun Avatar(
avatarData: AvatarData, avatarData: AvatarData,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
initialAvatarColors: AvatarColors? = null,
contentDescription: String? = null, contentDescription: String? = null,
) { ) {
val commonModifier = modifier val commonModifier = modifier
.size(avatarData.size.dp) .size(avatarData.size.dp)
.clip(CircleShape) .clip(CircleShape)
if (avatarData.url.isNullOrBlank()) { if (avatarData.url.isNullOrBlank()) {
val avatarColors = initialAvatarColors ?: AvatarColorsProvider.provide(avatarData.id, ElementTheme.isLightTheme)
InitialsAvatar( InitialsAvatar(
avatarData = avatarData, avatarData = avatarData,
avatarColors = avatarColors,
modifier = commonModifier, modifier = commonModifier,
) )
} else { } else {
@ -89,9 +85,9 @@ private fun ImageAvatar(
@Composable @Composable
private fun InitialsAvatar( private fun InitialsAvatar(
avatarData: AvatarData, avatarData: AvatarData,
avatarColors: AvatarColors,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val avatarColors = AvatarColorsProvider.provide(avatarData.id, ElementTheme.isLightTheme)
Box( Box(
modifier.background(color = avatarColors.background) modifier.background(color = avatarColors.background)
) { ) {

4
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar/UserAvatarPreview.kt

@ -24,11 +24,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.libraries.designsystem.colors.AvatarColorsProvider
import io.element.android.libraries.designsystem.preview.DayNightPreviews import io.element.android.libraries.designsystem.preview.DayNightPreviews
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.theme.ElementTheme
import io.element.android.libraries.theme.colors.avatarColorsLight import io.element.android.libraries.theme.colors.avatarColorsLight
@DayNightPreviews @DayNightPreviews
@ -44,7 +42,7 @@ internal fun UserAvatarPreview() = ElementPreview {
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
// Note: it's OK, since the hash of "0" is 0, the hash of "1" is 1, etc. // Note: it's OK, since the hash of "0" is 0, the hash of "1" is 1, etc.
Avatar(anAvatarData(), initialAvatarColors = AvatarColorsProvider.provide("$it", ElementTheme.isLightTheme)) Avatar(anAvatarData(id = "$it"))
Text(text = "Color index $it") Text(text = "Color index $it")
} }
} }

Loading…
Cancel
Save