diff --git a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/UserState.kt b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/UserState.kt index 3795aa15a8..1cb411dcfa 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/UserState.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/model/UserState.kt @@ -31,6 +31,7 @@ data class UserState( * @property email The user's email address. * @property name The user's name (if applicable). * @property avatarColorHex Hex color value for a user's avatar in the "#AARRGGBB" format. + * @property isPremium `true` if the account has a premium membership. * @property isVaultUnlocked Whether or not the user's vault is currently unlocked. */ data class Account( @@ -38,6 +39,7 @@ data class UserState( val name: String?, val email: String, val avatarColorHex: String, + val isPremium: Boolean, val isVaultUnlocked: Boolean, ) } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensions.kt b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensions.kt index 7053233098..29e6521b7e 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensions.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensions.kt @@ -53,6 +53,7 @@ fun UserStateJson.toUserState( email = accountJson.profile.email, // TODO Calculate default color (BIT-1191) avatarColorHex = accountJson.profile.avatarColorHex ?: "#00aaaa", + isPremium = accountJson.profile.hasPremium == true, isVaultUnlocked = userId in vaultState.unlockedVaultUserIds, ) }, diff --git a/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensionsTest.kt b/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensionsTest.kt index ad58c1863f..170cf3ec4f 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensionsTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/auth/repository/util/UserStateJsonExtensionsTest.kt @@ -96,6 +96,7 @@ class UserStateJsonExtensionsTest { name = "activeName", email = "activeEmail", avatarColorHex = "activeAvatarColorHex", + isPremium = false, isVaultUnlocked = true, ), ), @@ -104,11 +105,12 @@ class UserStateJsonExtensionsTest { activeUserId = "activeUserId", accounts = mapOf( "activeUserId" to AccountJson( - profile = mockk() { + profile = mockk { every { userId } returns "activeUserId" every { name } returns "activeName" every { email } returns "activeEmail" every { avatarColorHex } returns "activeAvatarColorHex" + every { hasPremium } returns null }, tokens = mockk(), settings = mockk(), @@ -134,6 +136,7 @@ class UserStateJsonExtensionsTest { name = "activeName", email = "activeEmail", avatarColorHex = "activeAvatarColorHex", + isPremium = true, isVaultUnlocked = false, ), ), @@ -142,18 +145,18 @@ class UserStateJsonExtensionsTest { activeUserId = "activeUserId", accounts = mapOf( "activeUserId" to AccountJson( - profile = mockk() { + profile = mockk { every { userId } returns "activeUserId" every { name } returns "activeName" every { email } returns "activeEmail" every { avatarColorHex } returns "activeAvatarColorHex" + every { hasPremium } returns true }, tokens = mockk(), settings = mockk(), ), ), - - ) + ) .toUserState( vaultState = VaultState( unlockedVaultUserIds = emptySet(), 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 1a4738b0ee..31c18f264d 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 @@ -229,6 +229,7 @@ private val DEFAULT_USER_STATE = UserState( name = "Active User", email = "active@bitwarden.com", avatarColorHex = "#aa00aa", + isPremium = true, isVaultUnlocked = true, ), ), diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModelTest.kt index eb1938ef6d..d4dc601751 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModelTest.kt @@ -33,6 +33,7 @@ class RootNavViewModelTest : BaseViewModelTest() { name = "name", email = "email", avatarColorHex = "avatarColorHex", + isPremium = true, isVaultUnlocked = true, ), ), @@ -53,6 +54,7 @@ class RootNavViewModelTest : BaseViewModelTest() { name = "name", email = "email", avatarColorHex = "avatarColorHex", + isPremium = true, isVaultUnlocked = false, ), ), 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 0e96170023..a2c19546a4 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 @@ -65,6 +65,7 @@ class VaultViewModelTest : BaseViewModelTest() { name = "Other User", email = "active@bitwarden.com", avatarColorHex = "#00aaaa", + isPremium = true, isVaultUnlocked = true, ), ), @@ -356,6 +357,7 @@ private val DEFAULT_USER_STATE = UserState( name = "Active User", email = "active@bitwarden.com", avatarColorHex = "#aa00aa", + isPremium = true, isVaultUnlocked = true, ), ), 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 c176e7105d..9a5fb2ea24 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 @@ -40,6 +40,7 @@ class UserStateExtensionsTest { name = "activeName", email = "activeEmail", avatarColorHex = "activeAvatarColorHex", + isPremium = true, isVaultUnlocked = true, ), UserState.Account( @@ -47,6 +48,7 @@ class UserStateExtensionsTest { name = "lockedName", email = "lockedEmail", avatarColorHex = "lockedAvatarColorHex", + isPremium = false, isVaultUnlocked = false, ), UserState.Account( @@ -54,6 +56,7 @@ class UserStateExtensionsTest { name = "unlockedName", email = "unlockedEmail", avatarColorHex = "unlockedAvatarColorHex", + isPremium = true, isVaultUnlocked = true, ), ), @@ -77,6 +80,7 @@ class UserStateExtensionsTest { name = "name", email = "email", avatarColorHex = "avatarColorHex", + isPremium = true, isVaultUnlocked = true, ) .toAccountSummary(isActive = true), @@ -98,6 +102,7 @@ class UserStateExtensionsTest { name = "name", email = "email", avatarColorHex = "avatarColorHex", + isPremium = false, isVaultUnlocked = false, ) .toAccountSummary(isActive = false), @@ -119,6 +124,7 @@ class UserStateExtensionsTest { name = "name", email = "email", avatarColorHex = "avatarColorHex", + isPremium = true, isVaultUnlocked = true, ) .toAccountSummary(isActive = false), @@ -144,6 +150,7 @@ class UserStateExtensionsTest { name = "name", email = "email", avatarColorHex = "avatarColorHex", + isPremium = true, isVaultUnlocked = true, ), ),