From 79ca73ec005bb50d098302fb5e2957a7a1483d17 Mon Sep 17 00:00:00 2001 From: Brian Yencho Date: Sat, 2 Dec 2023 13:03:33 -0600 Subject: [PATCH] BIT-1215: Improve handling of avatar initials for missing names (#308) --- .../vault/util/AccountSummaryExtensions.kt | 17 +++++++++++------ .../util/AccountSummaryExtensionsTest.kt | 19 ++++++++++++++++--- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/AccountSummaryExtensions.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/AccountSummaryExtensions.kt index be59d31e86..7de105f41a 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/AccountSummaryExtensions.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/AccountSummaryExtensions.kt @@ -4,6 +4,7 @@ import androidx.annotation.DrawableRes import androidx.annotation.StringRes import com.x8bit.bitwarden.R import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary +import java.util.Locale /** * Given the [AccountSummary], returns the first two "initials" found when looking at the @@ -12,17 +13,21 @@ import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary * Ex: * - "First Last" -> "FL" * - "First Second Last" -> "FS" - * - `null` -> ".." + * - "First" -> "FI" + * - name is `null`, email is "test@bitwarden.com" -> "TE" */ val AccountSummary.initials: String - get() = this - .name - ?.let { - it.split(" ") + get() { + val names = this.name.orEmpty().split(" ") + return if (names.size >= 2) { + names .take(2) .joinToString(separator = "") { it.first().toString() } + } else { + (this.name ?: this.email).take(2) } - ?: ".." + .uppercase(Locale.getDefault()) + } /** * Drawable resource to display for the given [AccountSummary]. diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/AccountSummaryExtensionsTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/AccountSummaryExtensionsTest.kt index 8118e40544..45b8558c2c 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/AccountSummaryExtensionsTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/AccountSummaryExtensionsTest.kt @@ -12,7 +12,7 @@ class AccountSummaryExtensionsTest { @Suppress("MaxLineLength") @Test - fun `initials should return the starting letters of the first two words in the name if present`() { + fun `initials should return the starting letters of the first two words for a multi-word name`() { assertEquals( "FS", mockk() { @@ -23,11 +23,24 @@ class AccountSummaryExtensionsTest { } @Test - fun `initials should return a default value if the name is not present`() { + fun `initials should return the first two letters of the name for a single word name`() { assertEquals( - "..", + "FI", + mockk() { + every { name } returns "First" + } + .initials, + ) + } + + @Suppress("MaxLineLength") + @Test + fun `initials should return the first two letters of the user's email if the name is not present`() { + assertEquals( + "TE", mockk() { every { name } returns null + every { email } returns "test@bitwarden.com" } .initials, )