Use ImmutableList in Composable.

This commit is contained in:
Benoit Marty 2024-06-20 15:53:42 +02:00 committed by Benoit Marty
parent 2ee3763890
commit 84f42537b8
3 changed files with 15 additions and 12 deletions

View file

@ -443,7 +443,7 @@ private fun MessagesViewComposerBottomSheetContents(
private fun MessagesViewTopBar( private fun MessagesViewTopBar(
roomName: String?, roomName: String?,
roomAvatar: AvatarData?, roomAvatar: AvatarData?,
heroes: List<AvatarData>, heroes: ImmutableList<AvatarData>,
callState: RoomCallState, callState: RoomCallState,
onRoomDetailsClick: () -> Unit, onRoomDetailsClick: () -> Unit,
onJoinCallClick: () -> Unit, onJoinCallClick: () -> Unit,
@ -503,7 +503,7 @@ private fun CallMenuItem(
private fun RoomAvatarAndNameRow( private fun RoomAvatarAndNameRow(
roomName: String, roomName: String,
roomAvatar: AvatarData, roomAvatar: AvatarData,
heroes: List<AvatarData>, heroes: ImmutableList<AvatarData>,
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
Row( Row(

View file

@ -26,7 +26,6 @@ import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@ -85,6 +84,8 @@ import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.testtags.TestTags import io.element.android.libraries.testtags.TestTags
import io.element.android.libraries.testtags.testTag import io.element.android.libraries.testtags.testTag
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toPersistentList
@Composable @Composable
fun RoomDetailsView( fun RoomDetailsView(
@ -326,7 +327,7 @@ private fun RoomHeaderSection(
roomAlias: RoomAlias?, roomAlias: RoomAlias?,
isEncrypted: Boolean, isEncrypted: Boolean,
isPublic: Boolean, isPublic: Boolean,
heroes: List<MatrixUser> = emptyList(), heroes: ImmutableList<MatrixUser>,
openAvatarPreview: (url: String) -> Unit, openAvatarPreview: (url: String) -> Unit,
) { ) {
Column( Column(
@ -344,7 +345,7 @@ private fun RoomHeaderSection(
url = user.avatarUrl, url = user.avatarUrl,
size = AvatarSize.RoomHeader size = AvatarSize.RoomHeader
) )
}, }.toPersistentList(),
modifier = Modifier modifier = Modifier
.clickable(enabled = avatarUrl != null) { openAvatarPreview(avatarUrl!!) } .clickable(enabled = avatarUrl != null) { openAvatarPreview(avatarUrl!!) }
.testTag(TestTags.roomDetailAvatar) .testTag(TestTags.roomDetailAvatar)

View file

@ -30,6 +30,8 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
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
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toPersistentList
import java.util.Collections import java.util.Collections
import kotlin.math.PI import kotlin.math.PI
import kotlin.math.cos import kotlin.math.cos
@ -38,7 +40,7 @@ import kotlin.math.sin
@Composable @Composable
fun CompositeAvatar( fun CompositeAvatar(
avatarData: AvatarData, avatarData: AvatarData,
heroes: List<AvatarData>, heroes: ImmutableList<AvatarData>,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
contentDescription: String? = null, contentDescription: String? = null,
) { ) {
@ -122,27 +124,27 @@ internal fun CompositeAvatarPreview() = ElementThemedPreview {
) { ) {
CompositeAvatar( CompositeAvatar(
avatarData = mainAvatar, avatarData = mainAvatar,
heroes = List(0) { aHeroAvatarData(it) }, heroes = List(0) { aHeroAvatarData(it) }.toPersistentList(),
) )
CompositeAvatar( CompositeAvatar(
avatarData = mainAvatar, avatarData = mainAvatar,
heroes = List(1) { aHeroAvatarData(it) }, heroes = List(1) { aHeroAvatarData(it) }.toPersistentList(),
) )
CompositeAvatar( CompositeAvatar(
avatarData = mainAvatar, avatarData = mainAvatar,
heroes = List(2) { aHeroAvatarData(it) }, heroes = List(2) { aHeroAvatarData(it) }.toPersistentList(),
) )
CompositeAvatar( CompositeAvatar(
avatarData = mainAvatar, avatarData = mainAvatar,
heroes = List(3) { aHeroAvatarData(it) }, heroes = List(3) { aHeroAvatarData(it) }.toPersistentList(),
) )
CompositeAvatar( CompositeAvatar(
avatarData = mainAvatar, avatarData = mainAvatar,
heroes = List(4) { aHeroAvatarData(it) }, heroes = List(4) { aHeroAvatarData(it) }.toPersistentList(),
) )
CompositeAvatar( CompositeAvatar(
avatarData = mainAvatar, avatarData = mainAvatar,
heroes = List(5) { aHeroAvatarData(it) }, heroes = List(5) { aHeroAvatarData(it) }.toPersistentList(),
) )
} }
} }