Pass item to RoomPrivacyOption
This commit is contained in:
parent
878b9ccf33
commit
54b76078a8
1 changed files with 16 additions and 23 deletions
|
|
@ -111,7 +111,7 @@ fun ConfigureRoomView(
|
||||||
RoomPrivacyOptions(
|
RoomPrivacyOptions(
|
||||||
modifier = Modifier.padding(bottom = 40.dp),
|
modifier = Modifier.padding(bottom = 40.dp),
|
||||||
selected = state.privacy,
|
selected = state.privacy,
|
||||||
onOptionSelected = { state.eventSink(ConfigureRoomEvents.RoomPrivacyChanged(it)) },
|
onOptionSelected = { state.eventSink(ConfigureRoomEvents.RoomPrivacyChanged(it.privacy)) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -228,20 +228,19 @@ fun RoomTopic(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data class RoomPrivacyItem(
|
||||||
|
val privacy: RoomPrivacy,
|
||||||
|
val icon: ImageVector,
|
||||||
|
val title: String,
|
||||||
|
val description: String,
|
||||||
|
)
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RoomPrivacyOptions(
|
fun RoomPrivacyOptions(
|
||||||
selected: RoomPrivacy?,
|
selected: RoomPrivacy?,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
onOptionSelected: (RoomPrivacy) -> Unit = {},
|
onOptionSelected: (RoomPrivacyItem) -> Unit = {},
|
||||||
) {
|
) {
|
||||||
|
|
||||||
data class RoomPrivacyItem(
|
|
||||||
val privacy: RoomPrivacy,
|
|
||||||
val icon: ImageVector,
|
|
||||||
val title: String,
|
|
||||||
val description: String,
|
|
||||||
)
|
|
||||||
|
|
||||||
val items = RoomPrivacy.values().map {
|
val items = RoomPrivacy.values().map {
|
||||||
when (it) {
|
when (it) {
|
||||||
RoomPrivacy.Public -> RoomPrivacyItem(
|
RoomPrivacy.Public -> RoomPrivacyItem(
|
||||||
|
|
@ -261,10 +260,7 @@ fun RoomPrivacyOptions(
|
||||||
Column(modifier = modifier.selectableGroup()) {
|
Column(modifier = modifier.selectableGroup()) {
|
||||||
items.forEach { item ->
|
items.forEach { item ->
|
||||||
RoomPrivacyOption(
|
RoomPrivacyOption(
|
||||||
privacy = item.privacy,
|
roomPrivacyItem = item,
|
||||||
icon = item.icon,
|
|
||||||
title = item.title,
|
|
||||||
description = item.description,
|
|
||||||
isSelected = selected == item.privacy,
|
isSelected = selected == item.privacy,
|
||||||
onOptionSelected = onOptionSelected,
|
onOptionSelected = onOptionSelected,
|
||||||
)
|
)
|
||||||
|
|
@ -274,27 +270,24 @@ fun RoomPrivacyOptions(
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RoomPrivacyOption(
|
fun RoomPrivacyOption(
|
||||||
privacy: RoomPrivacy,
|
roomPrivacyItem: RoomPrivacyItem,
|
||||||
icon: ImageVector,
|
|
||||||
title: String,
|
|
||||||
description: String,
|
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
isSelected: Boolean = false,
|
isSelected: Boolean = false,
|
||||||
onOptionSelected: (RoomPrivacy) -> Unit = {},
|
onOptionSelected: (RoomPrivacyItem) -> Unit = {},
|
||||||
) {
|
) {
|
||||||
Row(
|
Row(
|
||||||
modifier
|
modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.selectable(
|
.selectable(
|
||||||
selected = isSelected,
|
selected = isSelected,
|
||||||
onClick = { onOptionSelected(privacy) },
|
onClick = { onOptionSelected(roomPrivacyItem) },
|
||||||
role = Role.RadioButton,
|
role = Role.RadioButton,
|
||||||
)
|
)
|
||||||
.padding(8.dp),
|
.padding(8.dp),
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
modifier = Modifier.padding(horizontal = 8.dp),
|
modifier = Modifier.padding(horizontal = 8.dp),
|
||||||
imageVector = icon,
|
imageVector = roomPrivacyItem.icon,
|
||||||
contentDescription = "",
|
contentDescription = "",
|
||||||
tint = MaterialTheme.colorScheme.secondary,
|
tint = MaterialTheme.colorScheme.secondary,
|
||||||
)
|
)
|
||||||
|
|
@ -305,13 +298,13 @@ fun RoomPrivacyOption(
|
||||||
.padding(horizontal = 8.dp)
|
.padding(horizontal = 8.dp)
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = title,
|
text = roomPrivacyItem.title,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
color = MaterialTheme.colorScheme.primary,
|
color = MaterialTheme.colorScheme.primary,
|
||||||
)
|
)
|
||||||
Spacer(Modifier.size(3.dp))
|
Spacer(Modifier.size(3.dp))
|
||||||
Text(
|
Text(
|
||||||
text = description,
|
text = roomPrivacyItem.description,
|
||||||
fontSize = 12.sp,
|
fontSize = 12.sp,
|
||||||
lineHeight = 17.sp,
|
lineHeight = 17.sp,
|
||||||
color = MaterialTheme.colorScheme.tertiary,
|
color = MaterialTheme.colorScheme.tertiary,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue