Merge pull request #3129 from vector-im/feature/bma/dn_iteration

Empty room name small iteration
This commit is contained in:
Benoit Marty 2021-04-07 18:41:08 +02:00 committed by GitHub
commit eef6d92b89
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 17 deletions

View File

@ -26,15 +26,18 @@ class TestRoomDisplayNameFallbackProvider : RoomDisplayNameFallbackProvider {
override fun getNameForEmptyRoom(isDirect: Boolean, leftMemberNames: List<String>) =
"Empty room"
override fun getNameFor2members(name1: String?, name2: String?) =
override fun getNameFor1member(name: String) =
name
override fun getNameFor2members(name1: String, name2: String) =
"$name1 and $name2"
override fun getNameFor3members(name1: String?, name2: String?, name3: String?) =
override fun getNameFor3members(name1: String, name2: String, name3: String) =
"$name1, $name2 and $name3"
override fun getNameFor4members(name1: String?, name2: String?, name3: String?, name4: String?) =
override fun getNameFor4members(name1: String, name2: String, name3: String, name4: String) =
"$name1, $name2, $name3 and $name4"
override fun getNameFor4membersAndMore(name1: String?, name2: String?, name3: String?, remainingCount: Int) =
override fun getNameFor4membersAndMore(name1: String, name2: String, name3: String, remainingCount: Int) =
"$name1, $name2, $name3 and $remainingCount others"
}

View File

@ -19,8 +19,9 @@ package org.matrix.android.sdk.api
interface RoomDisplayNameFallbackProvider {
fun getNameForRoomInvite(): String
fun getNameForEmptyRoom(isDirect: Boolean, leftMemberNames: List<String>): String
fun getNameFor2members(name1: String?, name2: String?): String
fun getNameFor3members(name1: String?, name2: String?, name3: String?): String
fun getNameFor4members(name1: String?, name2: String?, name3: String?, name4: String?): String
fun getNameFor4membersAndMore(name1: String?, name2: String?, name3: String?, remainingCount: Int): String
fun getNameFor1member(name: String): String
fun getNameFor2members(name1: String, name2: String): String
fun getNameFor3members(name1: String, name2: String, name3: String): String
fun getNameFor4members(name1: String, name2: String, name3: String, name4: String): String
fun getNameFor4membersAndMore(name1: String, name2: String, name3: String, remainingCount: Int): String
}

View File

@ -112,7 +112,11 @@ internal class RoomDisplayNameResolver @Inject constructor(
.map { it.getBestName() }
roomDisplayNameFallbackProvider.getNameForEmptyRoom(roomSummary?.isDirect.orFalse(), leftMembersNames)
}
1 -> resolveRoomMemberName(otherMembersSubset[0], roomMembers)
1 -> {
roomDisplayNameFallbackProvider.getNameFor1member(
resolveRoomMemberName(otherMembersSubset[0], roomMembers)
)
}
2 -> {
roomDisplayNameFallbackProvider.getNameFor2members(
resolveRoomMemberName(otherMembersSubset[0], roomMembers),
@ -149,9 +153,8 @@ internal class RoomDisplayNameResolver @Inject constructor(
}
/** See [org.matrix.android.sdk.api.session.room.sender.SenderInfo.disambiguatedDisplayName] */
private fun resolveRoomMemberName(roomMemberSummary: RoomMemberSummaryEntity?,
roomMemberHelper: RoomMemberHelper): String? {
if (roomMemberSummary == null) return null
private fun resolveRoomMemberName(roomMemberSummary: RoomMemberSummaryEntity,
roomMemberHelper: RoomMemberHelper): String {
val isUnique = roomMemberHelper.isUniqueDisplayName(roomMemberSummary.displayName)
return if (isUnique) {
roomMemberSummary.getBestName()

View File

@ -32,23 +32,32 @@ class VectorRoomDisplayNameFallbackProvider(
return if (leftMemberNames.isEmpty()) {
context.getString(R.string.room_displayname_empty_room)
} else {
context.getString(R.string.room_displayname_empty_room_was, leftMemberNames.joinToString())
val was = when (val size = leftMemberNames.size) {
1 -> getNameFor1member(leftMemberNames[0])
2 -> getNameFor2members(leftMemberNames[0], leftMemberNames[1])
3 -> getNameFor3members(leftMemberNames[0], leftMemberNames[1], leftMemberNames[2])
4 -> getNameFor4members(leftMemberNames[0], leftMemberNames[1], leftMemberNames[2], leftMemberNames[3])
else -> getNameFor4membersAndMore(leftMemberNames[0], leftMemberNames[1], leftMemberNames[2], size - 3)
}
context.getString(R.string.room_displayname_empty_room_was, was)
}
}
override fun getNameFor2members(name1: String?, name2: String?): String {
override fun getNameFor1member(name: String) = name
override fun getNameFor2members(name1: String, name2: String): String {
return context.getString(R.string.room_displayname_two_members, name1, name2)
}
override fun getNameFor3members(name1: String?, name2: String?, name3: String?): String {
override fun getNameFor3members(name1: String, name2: String, name3: String): String {
return context.getString(R.string.room_displayname_3_members, name1, name2, name3)
}
override fun getNameFor4members(name1: String?, name2: String?, name3: String?, name4: String?): String {
override fun getNameFor4members(name1: String, name2: String, name3: String, name4: String): String {
return context.getString(R.string.room_displayname_4_members, name1, name2, name3, name4)
}
override fun getNameFor4membersAndMore(name1: String?, name2: String?, name3: String?, remainingCount: Int): String {
override fun getNameFor4membersAndMore(name1: String, name2: String, name3: String, remainingCount: Int): String {
return context.resources.getQuantityString(
R.plurals.room_displayname_four_and_more_members,
remainingCount,