Skip to content

Commit e4b76e0

Browse files
committed
Add back debugPlaceholderAvatar for inspection mode
1 parent f704cca commit e4b76e0

File tree

1 file changed

+27
-13
lines changed
  • libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/avatar

1 file changed

+27
-13
lines changed

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

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,21 @@ import androidx.compose.ui.Alignment
2828
import androidx.compose.ui.Modifier
2929
import androidx.compose.ui.draw.clip
3030
import androidx.compose.ui.layout.ContentScale
31+
import androidx.compose.ui.platform.LocalInspectionMode
3132
import androidx.compose.ui.semantics.clearAndSetSemantics
3233
import androidx.compose.ui.tooling.preview.Preview
3334
import androidx.compose.ui.tooling.preview.PreviewParameter
3435
import androidx.compose.ui.unit.dp
3536
import androidx.compose.ui.unit.sp
37+
import coil.compose.AsyncImage
3638
import coil.compose.AsyncImagePainter
3739
import coil.compose.SubcomposeAsyncImage
3840
import coil.compose.SubcomposeAsyncImageContent
3941
import io.element.android.compound.theme.ElementTheme
4042
import io.element.android.libraries.designsystem.colors.AvatarColorsProvider
4143
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
4244
import io.element.android.libraries.designsystem.preview.PreviewGroup
45+
import io.element.android.libraries.designsystem.preview.debugPlaceholderAvatar
4346
import io.element.android.libraries.designsystem.text.toSp
4447
import io.element.android.libraries.designsystem.theme.components.Text
4548
import timber.log.Timber
@@ -73,21 +76,32 @@ private fun ImageAvatar(
7376
modifier: Modifier = Modifier,
7477
contentDescription: String? = null,
7578
) {
76-
SubcomposeAsyncImage(
77-
model = avatarData,
78-
contentDescription = contentDescription,
79-
contentScale = ContentScale.Crop,
80-
modifier = modifier
81-
) {
82-
when (val state = painter.state) {
83-
is AsyncImagePainter.State.Success -> SubcomposeAsyncImageContent()
84-
is AsyncImagePainter.State.Error -> {
85-
SideEffect {
86-
Timber.e(state.result.throwable, "Error loading avatar $state\n${state.result}")
79+
if (LocalInspectionMode.current) {
80+
// For compose previews, use debugPlaceholderAvatar()
81+
// instead of falling back to initials avatar on load failure
82+
AsyncImage(
83+
model = avatarData,
84+
contentDescription = contentDescription,
85+
placeholder = debugPlaceholderAvatar(),
86+
modifier = modifier
87+
)
88+
} else {
89+
SubcomposeAsyncImage(
90+
model = avatarData,
91+
contentDescription = contentDescription,
92+
contentScale = ContentScale.Crop,
93+
modifier = modifier
94+
) {
95+
when (val state = painter.state) {
96+
is AsyncImagePainter.State.Success -> SubcomposeAsyncImageContent()
97+
is AsyncImagePainter.State.Error -> {
98+
SideEffect {
99+
Timber.e(state.result.throwable, "Error loading avatar $state\n${state.result}")
100+
}
101+
InitialsAvatar(avatarData = avatarData)
87102
}
88-
InitialsAvatar(avatarData = avatarData)
103+
else -> InitialsAvatar(avatarData = avatarData)
89104
}
90-
else -> InitialsAvatar(avatarData = avatarData)
91105
}
92106
}
93107
}

0 commit comments

Comments
 (0)