Skip to content

Commit ac0e39c

Browse files
authored
Merge pull request #5736 from element-hq/feature/bma/roomV12
Render Owner in the horizontal list when editing Admins.
2 parents c4dd960 + 954b229 commit ac0e39c

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesStateProvider.kt

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,14 @@ class ChangeRolesStateProvider : PreviewParameterProvider<ChangeRolesState> {
4444
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Loading),
4545
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Success(true)),
4646
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Failure(Exception("boom"))),
47-
aChangeRolesStateWithOwners(),
48-
aChangeRolesStateWithOwners().copy(role = RoomMember.Role.Owner(isCreator = false)),
47+
aChangeRolesStateWithOwners(
48+
role = RoomMember.Role.Admin,
49+
// Do not include the owners in the selectedUsers (the presenter will not do it), the View will add them
50+
selectedUsers = listOf(
51+
aMatrixUser(id = "@carol:server.org", displayName = "Carol"),
52+
)
53+
),
54+
aChangeRolesStateWithOwners(role = RoomMember.Role.Owner(isCreator = false)),
4955
)
5056
}
5157

@@ -88,8 +94,15 @@ internal fun aChangeRolesStateWithSelectedUsers() = aChangeRolesState(
8894
canRemoveMember = { it != UserId("@alice:server.org") },
8995
)
9096

91-
internal fun aChangeRolesStateWithOwners() = aChangeRolesState(
92-
role = RoomMember.Role.Admin,
97+
internal fun aChangeRolesStateWithOwners(
98+
role: RoomMember.Role = RoomMember.Role.Admin,
99+
selectedUsers: List<MatrixUser> = listOf(
100+
aMatrixUser(id = "@alice:server.org", displayName = "Alice"),
101+
aMatrixUser(id = "@bob:server.org", displayName = "Bob"),
102+
aMatrixUser(id = "@carol:server.org", displayName = "Carol"),
103+
),
104+
) = aChangeRolesState(
105+
role = role,
93106
searchResults = SearchBarResultState.Results(
94107
MembersByRole(
95108
members = persistentListOf(
@@ -125,9 +138,5 @@ internal fun aChangeRolesStateWithOwners() = aChangeRolesState(
125138
else -> false
126139
}
127140
},
128-
selectedUsers = persistentListOf(
129-
aMatrixUser(id = "@alice:server.org", displayName = "Alice"),
130-
aMatrixUser(id = "@bob:server.org", displayName = "Bob"),
131-
aMatrixUser(id = "@carol:server.org", displayName = "Carol"),
132-
)
141+
selectedUsers = selectedUsers.toImmutableList(),
133142
)

features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesView.kt

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import androidx.compose.foundation.lazy.items
3030
import androidx.compose.foundation.lazy.rememberLazyListState
3131
import androidx.compose.material3.ExperimentalMaterial3Api
3232
import androidx.compose.runtime.Composable
33+
import androidx.compose.runtime.remember
3334
import androidx.compose.ui.Alignment
3435
import androidx.compose.ui.Modifier
3536
import androidx.compose.ui.res.stringResource
@@ -71,6 +72,7 @@ import io.element.android.libraries.matrix.ui.components.SelectedUsersRowList
7172
import io.element.android.libraries.matrix.ui.model.getAvatarData
7273
import io.element.android.libraries.ui.strings.CommonStrings
7374
import kotlinx.collections.immutable.ImmutableList
75+
import kotlinx.collections.immutable.toImmutableList
7476

7577
@OptIn(ExperimentalMaterial3Api::class)
7678
@Composable
@@ -226,7 +228,18 @@ private fun SearchResultsList(
226228
state = lazyListState,
227229
) {
228230
item {
229-
selectedUsersList(selectedUsers)
231+
val usersInHorizontalRow = remember(searchResults.owners, selectedUsers) {
232+
if (currentRole == RoomMember.Role.Admin) {
233+
// Also include the owners in the horizontal list
234+
val owners = searchResults.owners.map {
235+
it.toMatrixUser()
236+
}
237+
(owners + selectedUsers).toImmutableList()
238+
} else {
239+
selectedUsers
240+
}
241+
}
242+
selectedUsersList(usersInHorizontalRow)
230243
}
231244
if (searchResults.owners.isNotEmpty()) {
232245
stickyHeader { ListSectionHeader(text = stringResource(R.string.screen_room_roles_and_permissions_owners)) }

0 commit comments

Comments
 (0)