iterate on the isSelected value. Let the UI decide how to render.

This commit is contained in:
Benoit Marty 2025-08-14 09:13:21 +02:00 committed by Benoit Marty
parent e74fcde43e
commit ae00c28c0d
3 changed files with 10 additions and 11 deletions

View file

@ -176,7 +176,7 @@ class DefaultInvitePeoplePresenter @AssistedInject constructor(
val isInvited = existingMembership == RoomMembershipState.INVITE val isInvited = existingMembership == RoomMembershipState.INVITE
InvitableUser( InvitableUser(
matrixUser = result.matrixUser, matrixUser = result.matrixUser,
isSelected = selectedUsers.value.contains(result.matrixUser) || isJoined || isInvited, isSelected = selectedUsers.value.contains(result.matrixUser),
isAlreadyJoined = isJoined, isAlreadyJoined = isJoined,
isAlreadyInvited = isInvited, isAlreadyInvited = isInvited,
isUnresolved = result.isUnresolved, isUnresolved = result.isUnresolved,

View file

@ -127,10 +127,9 @@ private fun InvitePeopleSearchBar(
LazyColumn { LazyColumn {
itemsIndexed(results) { index, invitableUser -> itemsIndexed(results) { index, invitableUser ->
val notInvitedOrJoined = val invitedOrJoined = invitableUser.isAlreadyInvited || invitableUser.isAlreadyJoined
!(invitableUser.isAlreadyInvited || invitableUser.isAlreadyJoined) val isUnresolved = invitableUser.isUnresolved && !invitedOrJoined
val isUnresolved = invitableUser.isUnresolved && notInvitedOrJoined val enabled = isUnresolved || !invitedOrJoined
val enabled = isUnresolved || notInvitedOrJoined
val data = if (isUnresolved) { val data = if (isUnresolved) {
CheckableUserRowData.Unresolved( CheckableUserRowData.Unresolved(
avatarData = invitableUser.matrixUser.getAvatarData(AvatarSize.UserListItem), avatarData = invitableUser.matrixUser.getAvatarData(AvatarSize.UserListItem),
@ -152,7 +151,7 @@ private fun InvitePeopleSearchBar(
) )
} }
CheckableUserRow( CheckableUserRow(
checked = invitableUser.isSelected, checked = invitableUser.isSelected || invitedOrJoined,
enabled = enabled, enabled = enabled,
data = data, data = data,
onCheckedChange = { onToggleUser(invitableUser.matrixUser) }, onCheckedChange = { onToggleUser(invitableUser.matrixUser) },

View file

@ -142,7 +142,7 @@ internal class DefaultInvitePeoplePresenterTest {
} else { } else {
assertThat(users[index].isAlreadyJoined).isTrue() assertThat(users[index].isAlreadyJoined).isTrue()
} }
assertThat(users[index].isSelected).isTrue() assertThat(users[index].isSelected).isFalse()
} }
} }
} }
@ -323,9 +323,9 @@ internal class DefaultInvitePeoplePresenterTest {
assertThat(shouldBeSelectedUser).isNotNull() assertThat(shouldBeSelectedUser).isNotNull()
assertThat(shouldBeSelectedUser?.isSelected).isTrue() assertThat(shouldBeSelectedUser?.isSelected).isTrue()
// All the others are selected since their membership is joined or invited // And no others are
val allOtherUsers = users.minus(shouldBeSelectedUser!!) val allOtherUsers = users.minus(shouldBeSelectedUser!!)
assertThat(allOtherUsers.all { it.isSelected }).isTrue() assertThat(allOtherUsers.none { it.isSelected }).isTrue()
} }
} }
@ -372,9 +372,9 @@ internal class DefaultInvitePeoplePresenterTest {
assertThat(shouldBeSelectedUser).isNotNull() assertThat(shouldBeSelectedUser).isNotNull()
assertThat(shouldBeSelectedUser?.isSelected).isTrue() assertThat(shouldBeSelectedUser?.isSelected).isTrue()
// All the others are selected since their membership is joined or invited // And no others are
val allOtherUsers = users.minus(shouldBeSelectedUser!!) val allOtherUsers = users.minus(shouldBeSelectedUser!!)
assertThat(allOtherUsers.all { it.isSelected }).isTrue() assertThat(allOtherUsers.none { it.isSelected }).isTrue()
} }
} }