From 72c0b9fe3816e8474d12a0122bcf1a864d8b2a41 Mon Sep 17 00:00:00 2001
From: Taras <tarassmakula@gmail.com>
Date: Tue, 14 Jun 2022 17:05:17 +0300
Subject: [PATCH] Add not empty display name

---
 .../futo/circles/feature/people/user/UserFragment.kt  | 11 ++++++-----
 .../edit_profile/EditProfileDialogFragment.kt         |  3 ++-
 .../sign_up/setup_circles/SetupCirclesDataSource.kt   |  3 ++-
 .../com/futo/circles/mapping/MatrixUserMapping.kt     | 10 +++++++---
 .../main/java/com/futo/circles/view/ProfileView.kt    |  3 ++-
 5 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/app/src/main/java/com/futo/circles/feature/people/user/UserFragment.kt b/app/src/main/java/com/futo/circles/feature/people/user/UserFragment.kt
index 251e4f365..0b3a8b2fc 100644
--- a/app/src/main/java/com/futo/circles/feature/people/user/UserFragment.kt
+++ b/app/src/main/java/com/futo/circles/feature/people/user/UserFragment.kt
@@ -13,6 +13,7 @@ import com.futo.circles.extensions.loadProfileIcon
 import com.futo.circles.extensions.observeData
 import com.futo.circles.extensions.setIsVisible
 import com.futo.circles.feature.people.user.list.UsersCirclesAdapter
+import com.futo.circles.mapping.notEmptyDisplayName
 import org.koin.androidx.viewmodel.ext.android.viewModel
 import org.koin.core.parameter.parametersOf
 import org.matrix.android.sdk.api.session.user.model.User
@@ -56,13 +57,13 @@ class UserFragment : Fragment(R.layout.user_fragment) {
 
     private fun setupUserInfo(user: User) {
         with(binding) {
-            (activity as? AppCompatActivity)?.supportActionBar?.title = user.displayName
+            (activity as? AppCompatActivity)?.supportActionBar?.title = user.notEmptyDisplayName()
             tvUserId.text = user.userId
-            tvUserName.text = user.displayName
-            ivUser.loadProfileIcon(user.avatarUrl, user.displayName ?: "")
-            tvCirclesListTitle.text = getString(R.string.users_circles_format, user.displayName)
+            tvUserName.text = user.notEmptyDisplayName()
+            ivUser.loadProfileIcon(user.avatarUrl, user.notEmptyDisplayName())
+            tvCirclesListTitle.text = getString(R.string.users_circles_format, user.notEmptyDisplayName())
             tvEmptyCirclesList.text =
-                getString(R.string.not_following_any_circles_format, user.displayName)
+                getString(R.string.not_following_any_circles_format, user.notEmptyDisplayName())
         }
     }
 
diff --git a/app/src/main/java/com/futo/circles/feature/settings/edit_profile/EditProfileDialogFragment.kt b/app/src/main/java/com/futo/circles/feature/settings/edit_profile/EditProfileDialogFragment.kt
index 1b7600540..5a2ef3dee 100644
--- a/app/src/main/java/com/futo/circles/feature/settings/edit_profile/EditProfileDialogFragment.kt
+++ b/app/src/main/java/com/futo/circles/feature/settings/edit_profile/EditProfileDialogFragment.kt
@@ -10,6 +10,7 @@ import com.futo.circles.core.fragment.BaseFullscreenDialogFragment
 import com.futo.circles.core.fragment.HasLoadingState
 import com.futo.circles.databinding.EditProfileDialogFragmentBinding
 import com.futo.circles.extensions.*
+import com.futo.circles.mapping.notEmptyDisplayName
 import org.koin.androidx.viewmodel.ext.android.viewModel
 import org.matrix.android.sdk.api.session.user.model.User
 
@@ -76,7 +77,7 @@ class EditProfileDialogFragment :
 
     private fun setInitialUserInfo(user: User) {
         with(binding) {
-            ivProfile.loadProfileIcon(user.avatarUrl, user.displayName ?: "")
+            ivProfile.loadProfileIcon(user.avatarUrl, user.notEmptyDisplayName())
             tilName.editText?.setText(user.displayName)
             tilUserId.editText?.setText(user.userId)
         }
diff --git a/app/src/main/java/com/futo/circles/feature/sign_up/setup_circles/SetupCirclesDataSource.kt b/app/src/main/java/com/futo/circles/feature/sign_up/setup_circles/SetupCirclesDataSource.kt
index bee40830a..c0b0502d3 100644
--- a/app/src/main/java/com/futo/circles/feature/sign_up/setup_circles/SetupCirclesDataSource.kt
+++ b/app/src/main/java/com/futo/circles/feature/sign_up/setup_circles/SetupCirclesDataSource.kt
@@ -4,6 +4,7 @@ import android.content.Context
 import android.net.Uri
 import androidx.lifecycle.MutableLiveData
 import com.futo.circles.R
+import com.futo.circles.mapping.notEmptyDisplayName
 import com.futo.circles.model.SetupCircleListItem
 import com.futo.circles.provider.MatrixSessionProvider
 import org.matrix.android.sdk.api.session.getUser
@@ -26,7 +27,7 @@ class SetupCirclesDataSource(
     private fun getUserName(): String {
         val session = MatrixSessionProvider.currentSession
         val userId = session?.myUserId ?: return ""
-        return session.getUser(userId)?.displayName ?: ""
+        return session.getUser(userId)?.notEmptyDisplayName()?:""
     }
 
     fun addCirclesCoverImage(id: Int, uri: Uri) {
diff --git a/app/src/main/java/com/futo/circles/mapping/MatrixUserMapping.kt b/app/src/main/java/com/futo/circles/mapping/MatrixUserMapping.kt
index 0bf37fd2d..43ad67446 100644
--- a/app/src/main/java/com/futo/circles/mapping/MatrixUserMapping.kt
+++ b/app/src/main/java/com/futo/circles/mapping/MatrixUserMapping.kt
@@ -8,7 +8,7 @@ import org.matrix.android.sdk.api.session.user.model.User
 fun User.toUserListItem(isSelected: Boolean) = UserListItem(
     user = CirclesUserSummary(
         id = userId,
-        name = displayName ?: userId,
+        name = notEmptyDisplayName(),
         avatarUrl = avatarUrl ?: ""
     ),
     isSelected = isSelected
@@ -17,8 +17,12 @@ fun User.toUserListItem(isSelected: Boolean) = UserListItem(
 fun User.toPeopleUserListItem(isIgnored: Boolean) = PeopleUserListItem(
     user = CirclesUserSummary(
         id = userId,
-        name = displayName ?: userId,
+        name = notEmptyDisplayName(),
         avatarUrl = avatarUrl ?: ""
     ),
     isIgnored = isIgnored
-)
\ No newline at end of file
+)
+
+fun User.notEmptyDisplayName() =
+    displayName?.takeIf { it.isNotEmpty() }
+        ?: userId.replace("@", "").substringBefore(":")
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/circles/view/ProfileView.kt b/app/src/main/java/com/futo/circles/view/ProfileView.kt
index c8b3a666e..6f0f7a793 100644
--- a/app/src/main/java/com/futo/circles/view/ProfileView.kt
+++ b/app/src/main/java/com/futo/circles/view/ProfileView.kt
@@ -6,6 +6,7 @@ import android.view.LayoutInflater
 import androidx.constraintlayout.widget.ConstraintLayout
 import com.futo.circles.databinding.ProfileViewBinding
 import com.futo.circles.extensions.loadProfileIcon
+import com.futo.circles.mapping.notEmptyDisplayName
 import org.matrix.android.sdk.api.session.user.model.User
 
 class ProfileView(
@@ -19,7 +20,7 @@ class ProfileView(
 
     fun setData(user: User) {
         with(binding) {
-            ivProfile.loadProfileIcon(user.avatarUrl, user.displayName ?: "")
+            ivProfile.loadProfileIcon(user.avatarUrl, user.notEmptyDisplayName())
             tvUserName.text = user.displayName
             tvUserId.text = user.userId
         }
-- 
GitLab