Merge pull request #5736 from element-hq/feature/bma/roomV12
Render Owner in the horizontal list when editing Admins.
This commit is contained in:
commit
ac0e39cbef
2 changed files with 32 additions and 10 deletions
|
|
@ -44,8 +44,14 @@ class ChangeRolesStateProvider : PreviewParameterProvider<ChangeRolesState> {
|
||||||
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Loading),
|
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Loading),
|
||||||
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Success(true)),
|
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Success(true)),
|
||||||
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Failure(Exception("boom"))),
|
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Failure(Exception("boom"))),
|
||||||
aChangeRolesStateWithOwners(),
|
aChangeRolesStateWithOwners(
|
||||||
aChangeRolesStateWithOwners().copy(role = RoomMember.Role.Owner(isCreator = false)),
|
role = RoomMember.Role.Admin,
|
||||||
|
// Do not include the owners in the selectedUsers (the presenter will not do it), the View will add them
|
||||||
|
selectedUsers = listOf(
|
||||||
|
aMatrixUser(id = "@carol:server.org", displayName = "Carol"),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
aChangeRolesStateWithOwners(role = RoomMember.Role.Owner(isCreator = false)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -88,8 +94,15 @@ internal fun aChangeRolesStateWithSelectedUsers() = aChangeRolesState(
|
||||||
canRemoveMember = { it != UserId("@alice:server.org") },
|
canRemoveMember = { it != UserId("@alice:server.org") },
|
||||||
)
|
)
|
||||||
|
|
||||||
internal fun aChangeRolesStateWithOwners() = aChangeRolesState(
|
internal fun aChangeRolesStateWithOwners(
|
||||||
role = RoomMember.Role.Admin,
|
role: RoomMember.Role = RoomMember.Role.Admin,
|
||||||
|
selectedUsers: List<MatrixUser> = listOf(
|
||||||
|
aMatrixUser(id = "@alice:server.org", displayName = "Alice"),
|
||||||
|
aMatrixUser(id = "@bob:server.org", displayName = "Bob"),
|
||||||
|
aMatrixUser(id = "@carol:server.org", displayName = "Carol"),
|
||||||
|
),
|
||||||
|
) = aChangeRolesState(
|
||||||
|
role = role,
|
||||||
searchResults = SearchBarResultState.Results(
|
searchResults = SearchBarResultState.Results(
|
||||||
MembersByRole(
|
MembersByRole(
|
||||||
members = persistentListOf(
|
members = persistentListOf(
|
||||||
|
|
@ -125,9 +138,5 @@ internal fun aChangeRolesStateWithOwners() = aChangeRolesState(
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
selectedUsers = persistentListOf(
|
selectedUsers = selectedUsers.toImmutableList(),
|
||||||
aMatrixUser(id = "@alice:server.org", displayName = "Alice"),
|
|
||||||
aMatrixUser(id = "@bob:server.org", displayName = "Bob"),
|
|
||||||
aMatrixUser(id = "@carol:server.org", displayName = "Carol"),
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
|
@ -71,6 +72,7 @@ import io.element.android.libraries.matrix.ui.components.SelectedUsersRowList
|
||||||
import io.element.android.libraries.matrix.ui.model.getAvatarData
|
import io.element.android.libraries.matrix.ui.model.getAvatarData
|
||||||
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.ImmutableList
|
||||||
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -226,7 +228,18 @@ private fun SearchResultsList(
|
||||||
state = lazyListState,
|
state = lazyListState,
|
||||||
) {
|
) {
|
||||||
item {
|
item {
|
||||||
selectedUsersList(selectedUsers)
|
val usersInHorizontalRow = remember(searchResults.owners, selectedUsers) {
|
||||||
|
if (currentRole == RoomMember.Role.Admin) {
|
||||||
|
// Also include the owners in the horizontal list
|
||||||
|
val owners = searchResults.owners.map {
|
||||||
|
it.toMatrixUser()
|
||||||
|
}
|
||||||
|
(owners + selectedUsers).toImmutableList()
|
||||||
|
} else {
|
||||||
|
selectedUsers
|
||||||
|
}
|
||||||
|
}
|
||||||
|
selectedUsersList(usersInHorizontalRow)
|
||||||
}
|
}
|
||||||
if (searchResults.owners.isNotEmpty()) {
|
if (searchResults.owners.isNotEmpty()) {
|
||||||
stickyHeader { ListSectionHeader(text = stringResource(R.string.screen_room_roles_and_permissions_owners)) }
|
stickyHeader { ListSectionHeader(text = stringResource(R.string.screen_room_roles_and_permissions_owners)) }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue