Merge pull request #2591 from element-hq/fix/jme/2590-update-room-member-list-after-changing-roles
Update member list after changing member roles
This commit is contained in:
commit
bbcc0079d8
5 changed files with 16 additions and 4 deletions
1
changelog.d/2590.bugfix
Normal file
1
changelog.d/2590.bugfix
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Update member list after changing member roles and when the room member list is opened.
|
||||||
|
|
@ -30,11 +30,13 @@ class RoomMemberListDataSource @Inject constructor(
|
||||||
) {
|
) {
|
||||||
suspend fun search(query: String): List<RoomMember> = withContext(coroutineDispatchers.io) {
|
suspend fun search(query: String): List<RoomMember> = withContext(coroutineDispatchers.io) {
|
||||||
val roomMembersState = room.membersStateFlow.value
|
val roomMembersState = room.membersStateFlow.value
|
||||||
val roomMembers = roomMembersState.roomMembers().orEmpty()
|
val activeRoomMembers = roomMembersState.roomMembers()
|
||||||
|
?.filter { it.membership.isActive() }
|
||||||
|
.orEmpty()
|
||||||
val filteredMembers = if (query.isBlank()) {
|
val filteredMembers = if (query.isBlank()) {
|
||||||
roomMembers
|
activeRoomMembers
|
||||||
} else {
|
} else {
|
||||||
roomMembers.filter { member ->
|
activeRoomMembers.filter { member ->
|
||||||
member.userId.value.contains(query, ignoreCase = true) ||
|
member.userId.value.contains(query, ignoreCase = true) ||
|
||||||
member.displayName?.contains(query, ignoreCase = true).orFalse()
|
member.displayName?.contains(query, ignoreCase = true).orFalse()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,11 @@ class RoomMemberListPresenter @AssistedInject constructor(
|
||||||
remember { roomMembersModerationPresenter.dummyState() }
|
remember { roomMembersModerationPresenter.dummyState() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure we load the latest data when entering this screen
|
||||||
|
LaunchedEffect(Unit) {
|
||||||
|
room.updateMembers()
|
||||||
|
}
|
||||||
|
|
||||||
LaunchedEffect(membersState) {
|
LaunchedEffect(membersState) {
|
||||||
if (membersState is MatrixRoomMembersState.Unknown) {
|
if (membersState is MatrixRoomMembersState.Unknown) {
|
||||||
return@LaunchedEffect
|
return@LaunchedEffect
|
||||||
|
|
|
||||||
|
|
@ -216,6 +216,8 @@ class ChangeRolesPresenter @AssistedInject constructor(
|
||||||
}
|
}
|
||||||
.onSuccess {
|
.onSuccess {
|
||||||
saveState.value = AsyncAction.Success(Unit)
|
saveState.value = AsyncAction.Success(Unit)
|
||||||
|
// Asynchronously reload the room members
|
||||||
|
launch { room.updateMembers() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,9 @@ enum class RoomMembershipState {
|
||||||
INVITE,
|
INVITE,
|
||||||
JOIN,
|
JOIN,
|
||||||
KNOCK,
|
KNOCK,
|
||||||
LEAVE
|
LEAVE;
|
||||||
|
|
||||||
|
fun isActive(): Boolean = this == JOIN || this == INVITE
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue