Now that we use a cache, there is no need to provide AvatarColors to the Avatar composable.
This commit is contained in:
parent
5a85efc458
commit
fad442760d
4 changed files with 11 additions and 19 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
) {
|
) {
|
||||||
|
|
|
||||||
|
|
@ -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…
Add table
Add a link
Reference in a new issue