Merge pull request #5508 from element-hq/feature/bma/noUriInComposeState

Replace Uri by String in States that are used in Composable function.
This commit is contained in:
Benoit Marty 2025-10-13 15:32:39 +02:00 committed by GitHub
commit d441c43993
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 78 additions and 87 deletions

View file

@ -7,7 +7,6 @@
package io.element.android.libraries.matrix.ui.components
import android.net.Uri
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
@ -28,7 +27,6 @@ import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import androidx.compose.ui.unit.dp
import androidx.core.net.toUri
import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons
import io.element.android.libraries.designsystem.components.avatar.Avatar
@ -47,7 +45,7 @@ import io.element.android.libraries.ui.strings.CommonStrings
fun EditableAvatarView(
matrixId: String,
displayName: String?,
avatarUrl: Uri?,
avatarUrl: String?,
avatarSize: AvatarSize,
avatarType: AvatarType,
onAvatarClick: () -> Unit,
@ -71,13 +69,13 @@ fun EditableAvatarView(
contentDescription = a11yAvatar
},
) {
when (avatarUrl?.scheme) {
null, "mxc" -> {
when {
avatarUrl == null || avatarUrl.startsWith("mxc://") -> {
Avatar(
avatarData = AvatarData(
id = matrixId,
name = displayName,
url = avatarUrl?.toString(),
url = avatarUrl,
size = avatarSize,
),
avatarType = avatarType,
@ -114,7 +112,7 @@ fun EditableAvatarView(
@PreviewsDayNight
@Composable
internal fun EditableAvatarViewPreview(
@PreviewParameter(EditableAvatarViewUriProvider::class) uri: Uri?
@PreviewParameter(EditableAvatarViewUriProvider::class) uri: String?
) = ElementPreview(
drawableFallbackForImages = CommonDrawables.sample_avatar,
) {
@ -128,11 +126,11 @@ internal fun EditableAvatarViewPreview(
)
}
open class EditableAvatarViewUriProvider : PreviewParameterProvider<Uri?> {
override val values: Sequence<Uri?>
open class EditableAvatarViewUriProvider : PreviewParameterProvider<String?> {
override val values: Sequence<String?>
get() = sequenceOf(
null,
"mxc://matrix.org/123456".toUri(),
"https://example.com/avatar.jpg".toUri(),
"mxc://matrix.org/123456",
"https://example.com/avatar.jpg",
)
}

View file

@ -7,7 +7,6 @@
package io.element.android.libraries.matrix.ui.components
import android.net.Uri
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@ -43,7 +42,7 @@ import io.element.android.libraries.designsystem.theme.temporaryColorBgSpecial
*/
@Composable
fun UnsavedAvatar(
avatarUri: Uri?,
avatarUri: String?,
avatarSize: AvatarSize,
avatarType: AvatarType,
modifier: Modifier = Modifier,
@ -86,8 +85,8 @@ internal fun UnsavedAvatarPreview() = ElementPreview {
horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
UnsavedAvatar(null, AvatarSize.EditRoomDetails, AvatarType.User)
UnsavedAvatar(Uri.EMPTY, AvatarSize.EditRoomDetails, AvatarType.User)
UnsavedAvatar("", AvatarSize.EditRoomDetails, AvatarType.User)
UnsavedAvatar(null, AvatarSize.EditRoomDetails, AvatarType.Space())
UnsavedAvatar(Uri.EMPTY, AvatarSize.EditRoomDetails, AvatarType.Space())
UnsavedAvatar("", AvatarSize.EditRoomDetails, AvatarType.Space())
}
}