Fix avatar for DM when other user has left
This commit is contained in:
parent
15a463d748
commit
5dc28c0564
|
@ -56,7 +56,13 @@ internal class RoomAvatarResolver @Inject constructor(@UserId private val userId
|
|||
|
||||
if (isDirectRoom) {
|
||||
if (members.size == 1) {
|
||||
return members.firstOrNull()?.avatarUrl
|
||||
// Use avatar of a left user
|
||||
val firstLeftAvatarUrl = roomMembers.queryLeftRoomMembersEvent()
|
||||
.findAll()
|
||||
.firstOrNull { !it.avatarUrl.isNullOrEmpty() }
|
||||
?.avatarUrl
|
||||
|
||||
return firstLeftAvatarUrl ?: members.firstOrNull()?.avatarUrl
|
||||
} else if (members.size == 2) {
|
||||
val firstOtherMember = members.where().notEqualTo(RoomMemberSummaryEntityFields.USER_ID, userId).findFirst()
|
||||
return firstOtherMember?.avatarUrl
|
||||
|
|
|
@ -107,9 +107,8 @@ internal class RoomDisplayNameResolver @Inject constructor(
|
|||
name = when (otherMembersCount) {
|
||||
0 -> {
|
||||
// Get left members if any
|
||||
val leftMembersNames = roomMembers.queryRoomMembersEvent()
|
||||
val leftMembersNames = roomMembers.queryLeftRoomMembersEvent()
|
||||
.findAll()
|
||||
.filter { it.membership == Membership.LEAVE }
|
||||
.map { it.getBestName() }
|
||||
roomDisplayNameFallbackProvider.getNameForEmptyRoom(roomSummary?.isDirect.orFalse(), leftMembersNames)
|
||||
}
|
||||
|
|
|
@ -75,6 +75,11 @@ internal class RoomMemberHelper(private val realm: Realm,
|
|||
.equalTo(RoomMemberSummaryEntityFields.MEMBERSHIP_STR, Membership.INVITE.name)
|
||||
}
|
||||
|
||||
fun queryLeftRoomMembersEvent(): RealmQuery<RoomMemberSummaryEntity> {
|
||||
return queryRoomMembersEvent()
|
||||
.equalTo(RoomMemberSummaryEntityFields.MEMBERSHIP_STR, Membership.LEAVE.name)
|
||||
}
|
||||
|
||||
fun queryActiveRoomMembersEvent(): RealmQuery<RoomMemberSummaryEntity> {
|
||||
return queryRoomMembersEvent()
|
||||
.beginGroup()
|
||||
|
|
Loading…
Reference in New Issue