Skip to content

Commit 0f5038a

Browse files
jmartinespElementBot
andauthored
Make the whole items in advanced settings screen clickable, standarize paddings (#2314)
* Make sure the whole item in advanced settings screen triggers the toggle action * Fix UI changes when setting `onChecked` actions to null. * Fix padding in invite member list items * Remove redundant `CheckableUserRow` alternatives. * Use 4dp for padding instead --------- Co-authored-by: ElementBot <[email protected]>
1 parent ede1dc0 commit 0f5038a

File tree

68 files changed

+230
-305
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+230
-305
lines changed

features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/components/SearchMultipleUsersResultItem.kt

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ import androidx.compose.ui.tooling.preview.Preview
2323
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
2424
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
2525
import io.element.android.libraries.designsystem.theme.components.HorizontalDivider
26-
import io.element.android.libraries.matrix.ui.components.CheckableMatrixUserRow
27-
import io.element.android.libraries.matrix.ui.components.CheckableUnresolvedUserRow
26+
import io.element.android.libraries.matrix.ui.components.CheckableUserRow
27+
import io.element.android.libraries.matrix.ui.components.CheckableUserRowData
2828
import io.element.android.libraries.matrix.ui.components.aMatrixUser
2929
import io.element.android.libraries.matrix.ui.model.getAvatarData
30+
import io.element.android.libraries.matrix.ui.model.getBestName
3031
import io.element.android.libraries.usersearch.api.UserSearchResult
3132

3233
@Composable
@@ -36,23 +37,24 @@ fun SearchMultipleUsersResultItem(
3637
onCheckedChange: (Boolean) -> Unit,
3738
modifier: Modifier = Modifier,
3839
) {
39-
if (searchResult.isUnresolved) {
40-
CheckableUnresolvedUserRow(
41-
checked = isUserSelected,
42-
modifier = modifier,
40+
val data = if (searchResult.isUnresolved) {
41+
CheckableUserRowData.Unresolved(
4342
avatarData = searchResult.matrixUser.getAvatarData(AvatarSize.UserListItem),
4443
id = searchResult.matrixUser.userId.value,
45-
onCheckedChange = onCheckedChange,
4644
)
4745
} else {
48-
CheckableMatrixUserRow(
49-
checked = isUserSelected,
50-
modifier = modifier,
51-
matrixUser = searchResult.matrixUser,
52-
avatarSize = AvatarSize.UserListItem,
53-
onCheckedChange = onCheckedChange,
46+
CheckableUserRowData.Resolved(
47+
name = searchResult.matrixUser.getBestName(),
48+
subtext = if (searchResult.matrixUser.displayName.isNullOrEmpty()) null else searchResult.matrixUser.userId.value,
49+
avatarData = searchResult.matrixUser.getAvatarData(AvatarSize.UserListItem),
5450
)
5551
}
52+
CheckableUserRow(
53+
checked = isUserSelected,
54+
modifier = modifier,
55+
data = data,
56+
onCheckedChange = onCheckedChange,
57+
)
5658
}
5759

5860
@Preview

features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/advanced/AdvancedSettingsView.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ fun AdvancedSettingsView(
6666
},
6767
trailingContent = ListItemContent.Switch(
6868
checked = state.isRichTextEditorEnabled,
69-
onChange = { state.eventSink(AdvancedSettingsEvents.SetRichTextEditorEnabled(it)) },
7069
),
70+
onClick = { state.eventSink(AdvancedSettingsEvents.SetRichTextEditorEnabled(!state.isRichTextEditorEnabled)) }
7171
)
7272
ListItem(
7373
headlineContent = {
@@ -78,8 +78,8 @@ fun AdvancedSettingsView(
7878
},
7979
trailingContent = ListItemContent.Switch(
8080
checked = state.isDeveloperModeEnabled,
81-
onChange = { state.eventSink(AdvancedSettingsEvents.SetDeveloperModeEnabled(it)) },
8281
),
82+
onClick = { state.eventSink(AdvancedSettingsEvents.SetDeveloperModeEnabled(!state.isDeveloperModeEnabled)) }
8383
)
8484
ListItem(
8585
headlineContent = {
@@ -90,8 +90,8 @@ fun AdvancedSettingsView(
9090
},
9191
trailingContent = ListItemContent.Switch(
9292
checked = state.isSendPublicReadReceiptsEnabled,
93-
onChange = { state.eventSink(AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled(it)) },
9493
),
94+
onClick = { state.eventSink(AdvancedSettingsEvents.SetSendPublicReadReceiptsEnabled(!state.isSendPublicReadReceiptsEnabled)) }
9595
)
9696
}
9797

features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/invite/RoomInviteMembersView.kt

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ import io.element.android.libraries.designsystem.theme.components.Text
4646
import io.element.android.libraries.designsystem.theme.components.TextButton
4747
import io.element.android.libraries.designsystem.theme.components.TopAppBar
4848
import io.element.android.libraries.matrix.api.user.MatrixUser
49-
import io.element.android.libraries.matrix.ui.components.CheckableUnresolvedUserRow
5049
import io.element.android.libraries.matrix.ui.components.CheckableUserRow
50+
import io.element.android.libraries.matrix.ui.components.CheckableUserRowData
5151
import io.element.android.libraries.matrix.ui.components.SelectedUsersList
5252
import io.element.android.libraries.matrix.ui.model.getAvatarData
5353
import io.element.android.libraries.matrix.ui.model.getBestName
@@ -186,18 +186,16 @@ private fun RoomInviteMembersSearchBar(
186186

187187
LazyColumn {
188188
itemsIndexed(results) { index, invitableUser ->
189-
if (invitableUser.isUnresolved && !invitableUser.isAlreadyInvited && !invitableUser.isAlreadyJoined) {
190-
CheckableUnresolvedUserRow(
191-
checked = invitableUser.isSelected,
189+
val notInvitedOrJoined = !(invitableUser.isAlreadyInvited || invitableUser.isAlreadyJoined)
190+
val isUnresolved = invitableUser.isUnresolved && notInvitedOrJoined
191+
val enabled = isUnresolved || notInvitedOrJoined
192+
val data = if (isUnresolved) {
193+
CheckableUserRowData.Unresolved(
192194
avatarData = invitableUser.matrixUser.getAvatarData(AvatarSize.UserListItem),
193195
id = invitableUser.matrixUser.userId.value,
194-
onCheckedChange = { onUserToggled(invitableUser.matrixUser) },
195-
modifier = Modifier.fillMaxWidth()
196196
)
197197
} else {
198-
CheckableUserRow(
199-
checked = invitableUser.isSelected,
200-
enabled = !invitableUser.isAlreadyInvited && !invitableUser.isAlreadyJoined,
198+
CheckableUserRowData.Resolved(
201199
avatarData = invitableUser.matrixUser.getAvatarData(AvatarSize.UserListItem),
202200
name = invitableUser.matrixUser.getBestName(),
203201
subtext = when {
@@ -207,11 +205,16 @@ private fun RoomInviteMembersSearchBar(
207205
// Otherwise show the ID, unless that's already used for their name
208206
invitableUser.matrixUser.displayName.isNullOrEmpty().not() -> invitableUser.matrixUser.userId.value
209207
else -> null
210-
},
211-
onCheckedChange = { onUserToggled(invitableUser.matrixUser) },
212-
modifier = Modifier.fillMaxWidth()
208+
}
213209
)
214210
}
211+
CheckableUserRow(
212+
checked = invitableUser.isSelected,
213+
enabled = enabled,
214+
data = data,
215+
onCheckedChange = { onUserToggled(invitableUser.matrixUser) },
216+
modifier = Modifier.fillMaxWidth()
217+
)
215218

216219
if (index < results.lastIndex) {
217220
HorizontalDivider()

libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Checkbox.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import androidx.compose.foundation.layout.Column
2222
import androidx.compose.foundation.layout.Row
2323
import androidx.compose.material3.CheckboxColors
2424
import androidx.compose.material3.CheckboxDefaults
25+
import androidx.compose.material3.minimumInteractiveComponentSize
2526
import androidx.compose.runtime.Composable
2627
import androidx.compose.runtime.getValue
2728
import androidx.compose.runtime.mutableStateOf
@@ -57,7 +58,7 @@ fun Checkbox(
5758
onCheckedChange(!checked)
5859
}
5960
},
60-
modifier = modifier,
61+
modifier = modifier.minimumInteractiveComponentSize(),
6162
enabled = enabled,
6263
colors = colors,
6364
interactionSource = interactionSource,

libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/RadioButton.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import androidx.compose.foundation.layout.Column
2222
import androidx.compose.foundation.layout.Row
2323
import androidx.compose.material3.RadioButtonColors
2424
import androidx.compose.material3.RadioButtonDefaults
25+
import androidx.compose.material3.minimumInteractiveComponentSize
2526
import androidx.compose.runtime.Composable
2627
import androidx.compose.runtime.getValue
2728
import androidx.compose.runtime.mutableStateOf
@@ -48,7 +49,7 @@ fun RadioButton(
4849
androidx.compose.material3.RadioButton(
4950
selected = selected,
5051
onClick = onClick,
51-
modifier = modifier,
52+
modifier = modifier.minimumInteractiveComponentSize(),
5253
enabled = enabled,
5354
colors = colors,
5455
interactionSource = interactionSource,

libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Switch.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import androidx.compose.foundation.layout.Row
2323
import androidx.compose.foundation.layout.padding
2424
import androidx.compose.material3.SwitchColors
2525
import androidx.compose.material3.SwitchDefaults
26+
import androidx.compose.material3.minimumInteractiveComponentSize
2627
import androidx.compose.runtime.Composable
2728
import androidx.compose.runtime.getValue
2829
import androidx.compose.runtime.mutableStateOf
@@ -52,7 +53,7 @@ fun Switch(
5253
Material3Switch(
5354
checked = checked,
5455
onCheckedChange = onCheckedChange,
55-
modifier = modifier,
56+
modifier = modifier.minimumInteractiveComponentSize(),
5657
enabled = enabled,
5758
colors = colors,
5859
interactionSource = interactionSource,

libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/CheckableMatrixUserRow.kt

Lines changed: 0 additions & 75 deletions
This file was deleted.

libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/CheckableUnresolvedUserRow.kt

Lines changed: 0 additions & 104 deletions
This file was deleted.

0 commit comments

Comments
 (0)