From 82ac302843b01c80723462b8ed63d1c9ab44c985 Mon Sep 17 00:00:00 2001
From: Maxime Naturel <maxime.naturel@niji.fr>
Date: Thu, 10 Feb 2022 17:50:48 +0100
Subject: [PATCH] Fixing avatar name when there is no room picture

---
 .../org/matrix/android/sdk/api/util/MatrixItem.kt     | 11 ++++++++---
 .../member/AutocompleteMemberController.kt            |  2 --
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/MatrixItem.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/MatrixItem.kt
index 9ad1e42513..1f3a94b2ad 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/MatrixItem.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/MatrixItem.kt
@@ -45,7 +45,8 @@ sealed class MatrixItem(
 
     data class EveryoneInRoomItem(override val id: String,
                                   override val displayName: String? = null,
-                                  override val avatarUrl: String? = null) :
+                                  override val avatarUrl: String? = null,
+                                  val roomDisplayName: String? = null) :
             MatrixItem(id, displayName, avatarUrl) {
         init {
             if (BuildConfig.DEBUG) checkId()
@@ -131,7 +132,11 @@ sealed class MatrixItem(
     }
 
     fun firstLetterOfDisplayName(): String {
-        // TODO retrieve first letter of room name when EveryoneInRoomItem
+        val displayName = when (this) {
+            // use the room display name for the notify everyone item
+            is EveryoneInRoomItem -> roomDisplayName
+            else                  -> displayName
+        }
         return (displayName?.takeIf { it.isNotBlank() } ?: id)
                 .let { dn ->
                     var startIndex = 0
@@ -185,7 +190,7 @@ fun RoomSummary.toMatrixItem() = if (roomType == RoomType.SPACE) {
 
 fun RoomSummary.toRoomAliasMatrixItem() = MatrixItem.RoomAliasItem(canonicalAlias ?: roomId, displayName, avatarUrl)
 
-fun RoomSummary.toEveryoneInRoomMatrixItem() = MatrixItem.EveryoneInRoomItem(roomId, MatrixItem.NOTIFY_EVERYONE, avatarUrl)
+fun RoomSummary.toEveryoneInRoomMatrixItem() = MatrixItem.EveryoneInRoomItem(roomId, MatrixItem.NOTIFY_EVERYONE, avatarUrl, displayName)
 
 // If no name is available, use room alias as Riot-Web does
 fun PublicRoom.toMatrixItem() = MatrixItem.RoomItem(roomId, name ?: getPrimaryAlias() ?: "", avatarUrl)
diff --git a/vector/src/main/java/im/vector/app/features/autocomplete/member/AutocompleteMemberController.kt b/vector/src/main/java/im/vector/app/features/autocomplete/member/AutocompleteMemberController.kt
index 0684067ba8..2132cc2f1d 100644
--- a/vector/src/main/java/im/vector/app/features/autocomplete/member/AutocompleteMemberController.kt
+++ b/vector/src/main/java/im/vector/app/features/autocomplete/member/AutocompleteMemberController.kt
@@ -81,8 +81,6 @@ class AutocompleteMemberController @Inject constructor(private val context: Cont
                 id(room.roomId)
                 matrixItem(room.toEveryoneInRoomMatrixItem())
                 subName(host.context.getString(R.string.room_message_notify_everyone))
-                // TODO fix usage of first letter of room name when avatarUrl is empty
-                // TODO test avatar with a room which has a picture
                 avatarRenderer(host.avatarRenderer)
                 clickListener { host.listener?.onItemClick(everyone) }
             }