diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/components/model/AccountSummary.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/components/model/AccountSummary.kt index 14269d1387..8a1890015a 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/components/model/AccountSummary.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/components/model/AccountSummary.kt @@ -14,7 +14,8 @@ import kotlinx.parcelize.Parcelize * @property avatarColorHex Hex color value for a user's avatar in the "#AARRGGBB" format. * @property environmentLabel Label for the environment associated with the user's account * (ex: "bitwarden.com"). This is purely for display purposes. - * @property status The current status of the user's account locally. + * @property isActive Whether or not the account is currently the active one. + * @property isVaultUnlocked Whether or not the account's vault is currently unlocked. */ @Parcelize data class AccountSummary( @@ -23,7 +24,8 @@ data class AccountSummary( val email: String, val avatarColorHex: String, val environmentLabel: String, - val status: Status, + val isActive: Boolean, + val isVaultUnlocked: Boolean, ) : Parcelable { /** @@ -32,6 +34,16 @@ data class AccountSummary( val avatarColor: Color get() = avatarColorHex.hexToColor() + /** + * The current status of the user's account locally. + */ + val status: Status + get() = when { + isActive -> Status.ACTIVE + isVaultUnlocked -> Status.UNLOCKED + else -> Status.LOCKED + } + /** * Describes the status of the given account. */ diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensions.kt b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensions.kt index 7dcd7d7bc3..8571fdeccb 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensions.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensions.kt @@ -36,9 +36,6 @@ fun UserState.Account.toAccountSummary( email = this.email, avatarColorHex = this.avatarColorHex, environmentLabel = this.environment.label, - status = when { - isActive -> AccountSummary.Status.ACTIVE - this.isVaultUnlocked -> AccountSummary.Status.UNLOCKED - else -> AccountSummary.Status.LOCKED - }, + isActive = isActive, + isVaultUnlocked = this.isVaultUnlocked, ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingScreenTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingScreenTest.kt index 8f08c61868..4644d1bc07 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingScreenTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/landing/LandingScreenTest.kt @@ -353,7 +353,8 @@ private val ACTIVE_ACCOUNT_SUMMARY = AccountSummary( email = "active@bitwarden.com", avatarColorHex = "#aa00aa", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.ACTIVE, + isActive = true, + isVaultUnlocked = true, ) private val DEFAULT_STATE = LandingState( diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginScreenTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginScreenTest.kt index 53c1089e56..20f18da3ea 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginScreenTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/login/LoginScreenTest.kt @@ -175,7 +175,8 @@ private val ACTIVE_ACCOUNT_SUMMARY = AccountSummary( email = "active@bitwarden.com", avatarColorHex = "#aa00aa", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.ACTIVE, + isActive = true, + isVaultUnlocked = true, ) private val DEFAULT_STATE = diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockScreenTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockScreenTest.kt index 23e63161c5..d27a18484f 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockScreenTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockScreenTest.kt @@ -206,7 +206,8 @@ private val ACTIVE_ACCOUNT_SUMMARY = AccountSummary( email = "active@bitwarden.com", avatarColorHex = "#aa00aa", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.ACTIVE, + isActive = true, + isVaultUnlocked = true, ) private val LOCKED_ACCOUNT_SUMMARY = AccountSummary( @@ -215,7 +216,8 @@ private val LOCKED_ACCOUNT_SUMMARY = AccountSummary( email = "locked@bitwarden.com", avatarColorHex = "#00aaaa", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.LOCKED, + isActive = false, + isVaultUnlocked = false, ) private val ACCOUNT_SUMMARIES = listOf( diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt index d08be58f43..47b5c354b4 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt @@ -119,7 +119,8 @@ class VaultUnlockViewModelTest : BaseViewModelTest() { email = "active+test@bitwarden.com", avatarColorHex = "#00aaaa", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.ACTIVE, + isActive = true, + isVaultUnlocked = true, ), ), ), @@ -288,7 +289,8 @@ private val DEFAULT_STATE: VaultUnlockState = VaultUnlockState( email = "active@bitwarden.com", avatarColorHex = "#aa00aa", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.ACTIVE, + isActive = true, + isVaultUnlocked = true, ), ), avatarColorString = "#aa00aa", diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultScreenTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultScreenTest.kt index 610696ca64..4cc9d0dc4c 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultScreenTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultScreenTest.kt @@ -481,7 +481,8 @@ private val ACTIVE_ACCOUNT_SUMMARY = AccountSummary( email = "active@bitwarden.com", avatarColorHex = "#aa00aa", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.ACTIVE, + isActive = true, + isVaultUnlocked = true, ) private val LOCKED_ACCOUNT_SUMMARY = AccountSummary( @@ -490,7 +491,8 @@ private val LOCKED_ACCOUNT_SUMMARY = AccountSummary( email = "locked@bitwarden.com", avatarColorHex = "#00aaaa", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.LOCKED, + isActive = false, + isVaultUnlocked = false, ) private val DEFAULT_STATE: VaultState = VaultState( diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModelTest.kt index 8faebd2c8d..0b85d396ab 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModelTest.kt @@ -135,7 +135,8 @@ class VaultViewModelTest : BaseViewModelTest() { email = "active@bitwarden.com", avatarColorHex = "#00aaaa", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.ACTIVE, + isActive = true, + isVaultUnlocked = true, ), ), ), @@ -487,7 +488,8 @@ private fun createMockVaultState(viewState: VaultState.ViewState): VaultState = email = "active@bitwarden.com", avatarColorHex = "#aa00aa", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.ACTIVE, + isActive = true, + isVaultUnlocked = true, ), AccountSummary( userId = "lockedUserId", @@ -495,7 +497,8 @@ private fun createMockVaultState(viewState: VaultState.ViewState): VaultState = email = "locked@bitwarden.com", avatarColorHex = "#00aaaa", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.LOCKED, + isActive = false, + isVaultUnlocked = false, ), ), viewState = viewState, diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensionsTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensionsTest.kt index f006dade83..8b93a3f961 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensionsTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/vault/feature/vault/util/UserStateExtensionsTest.kt @@ -18,7 +18,8 @@ class UserStateExtensionsTest { email = "activeEmail", avatarColorHex = "activeAvatarColorHex", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.ACTIVE, + isActive = true, + isVaultUnlocked = true, ), AccountSummary( userId = "lockedUserId", @@ -26,7 +27,8 @@ class UserStateExtensionsTest { email = "lockedEmail", avatarColorHex = "lockedAvatarColorHex", environmentLabel = "bitwarden.eu", - status = AccountSummary.Status.LOCKED, + isActive = false, + isVaultUnlocked = false, ), AccountSummary( userId = "unlockedUserId", @@ -34,7 +36,8 @@ class UserStateExtensionsTest { email = "unlockedEmail", avatarColorHex = "unlockedAvatarColorHex", environmentLabel = "vault.qa.bitwarden.pw", - status = AccountSummary.Status.UNLOCKED, + isActive = false, + isVaultUnlocked = true, ), ), UserState( @@ -86,7 +89,8 @@ class UserStateExtensionsTest { email = "email", avatarColorHex = "avatarColorHex", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.ACTIVE, + isActive = true, + isVaultUnlocked = true, ), UserState.Account( userId = "userId", @@ -102,7 +106,7 @@ class UserStateExtensionsTest { } @Test - fun `toAccountSummary for an locked account should return a locked AccountSummary`() { + fun `toAccountSummary for an inactive account should return an inactive AccountSummary`() { assertEquals( AccountSummary( userId = "userId", @@ -110,7 +114,8 @@ class UserStateExtensionsTest { email = "email", avatarColorHex = "avatarColorHex", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.LOCKED, + isActive = false, + isVaultUnlocked = false, ), UserState.Account( userId = "userId", @@ -125,30 +130,6 @@ class UserStateExtensionsTest { ) } - @Test - fun `toAccountSummary for a unlocked account should return a locked AccountSummary`() { - assertEquals( - AccountSummary( - userId = "userId", - name = "name", - email = "email", - avatarColorHex = "avatarColorHex", - environmentLabel = "bitwarden.eu", - status = AccountSummary.Status.UNLOCKED, - ), - UserState.Account( - userId = "userId", - name = "name", - email = "email", - avatarColorHex = "avatarColorHex", - environment = Environment.Eu, - isPremium = true, - isVaultUnlocked = true, - ) - .toAccountSummary(isActive = false), - ) - } - @Suppress("MaxLineLength") @Test fun `toActiveAccountSummary should return an active AccountSummary`() { @@ -159,7 +140,8 @@ class UserStateExtensionsTest { email = "email", avatarColorHex = "avatarColorHex", environmentLabel = "bitwarden.com", - status = AccountSummary.Status.ACTIVE, + isActive = true, + isVaultUnlocked = true, ), UserState( activeUserId = "activeUserId",