mirror of
https://github.com/bitwarden/android.git
synced 2026-04-29 20:38:41 -05:00
Add environment data to UserState.Account and AccountSummary (#351)
This commit is contained in:
committed by
Álison Fernandes
parent
b2c2c9e563
commit
146f770b8c
@@ -1,6 +1,7 @@
|
||||
package com.x8bit.bitwarden.data.auth.repository.model
|
||||
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.UserState.Account
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.Environment
|
||||
|
||||
/**
|
||||
* Represents the overall "user state" of the current active user as well as any users that may be
|
||||
@@ -39,6 +40,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 environment The [Environment] associated with the user's account.
|
||||
* @property isPremium `true` if the account has a premium membership.
|
||||
* @property isVaultUnlocked Whether or not the user's vault is currently unlocked.
|
||||
*/
|
||||
@@ -47,6 +49,7 @@ data class UserState(
|
||||
val name: String?,
|
||||
val email: String,
|
||||
val avatarColorHex: String,
|
||||
val environment: Environment,
|
||||
val isPremium: Boolean,
|
||||
val isVaultUnlocked: Boolean,
|
||||
)
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.x8bit.bitwarden.data.auth.repository.util
|
||||
|
||||
import com.x8bit.bitwarden.data.auth.datasource.disk.model.UserStateJson
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.UserState
|
||||
import com.x8bit.bitwarden.data.platform.repository.util.toEnvironmentUrlsOrDefault
|
||||
import com.x8bit.bitwarden.data.vault.datasource.network.model.SyncResponseJson
|
||||
import com.x8bit.bitwarden.data.vault.repository.model.VaultState
|
||||
import com.x8bit.bitwarden.ui.platform.base.util.toHexColorRepresentation
|
||||
@@ -56,6 +57,10 @@ fun UserStateJson.toUserState(
|
||||
email = accountJson.profile.email,
|
||||
avatarColorHex = accountJson.profile.avatarColorHex
|
||||
?: accountJson.profile.userId.toHexColorRepresentation(),
|
||||
environment = accountJson
|
||||
.settings
|
||||
.environmentUrlData
|
||||
.toEnvironmentUrlsOrDefault(),
|
||||
isPremium = accountJson.profile.hasPremium == true,
|
||||
isVaultUnlocked = userId in vaultState.unlockedVaultUserIds,
|
||||
)
|
||||
|
||||
@@ -12,6 +12,8 @@ import kotlinx.parcelize.Parcelize
|
||||
* @property name The full name of the user (if applicable).
|
||||
* @property email The email of the user.
|
||||
* @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.
|
||||
*/
|
||||
@Parcelize
|
||||
@@ -20,6 +22,7 @@ data class AccountSummary(
|
||||
val name: String?,
|
||||
val email: String,
|
||||
val avatarColorHex: String,
|
||||
val environmentLabel: String,
|
||||
val status: Status,
|
||||
) : Parcelable {
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ fun UserState.Account.toAccountSummary(
|
||||
name = this.name,
|
||||
email = this.email,
|
||||
avatarColorHex = this.avatarColorHex,
|
||||
environmentLabel = this.environment.label,
|
||||
status = when {
|
||||
isActive -> AccountSummary.Status.ACTIVE
|
||||
this.isVaultUnlocked -> AccountSummary.Status.UNLOCKED
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.x8bit.bitwarden.data.auth.repository.util
|
||||
|
||||
import com.x8bit.bitwarden.data.auth.datasource.disk.model.AccountJson
|
||||
import com.x8bit.bitwarden.data.auth.datasource.disk.model.EnvironmentUrlDataJson
|
||||
import com.x8bit.bitwarden.data.auth.datasource.disk.model.UserStateJson
|
||||
import com.x8bit.bitwarden.data.auth.datasource.network.model.KdfTypeJson
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.UserState
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.Environment
|
||||
import com.x8bit.bitwarden.data.vault.repository.model.VaultState
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
@@ -96,6 +98,7 @@ class UserStateJsonExtensionsTest {
|
||||
name = "activeName",
|
||||
email = "activeEmail",
|
||||
avatarColorHex = "activeAvatarColorHex",
|
||||
environment = Environment.Eu,
|
||||
isPremium = false,
|
||||
isVaultUnlocked = true,
|
||||
),
|
||||
@@ -113,7 +116,9 @@ class UserStateJsonExtensionsTest {
|
||||
every { hasPremium } returns null
|
||||
},
|
||||
tokens = mockk(),
|
||||
settings = mockk(),
|
||||
settings = AccountJson.Settings(
|
||||
environmentUrlData = EnvironmentUrlDataJson.DEFAULT_EU,
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -138,6 +143,7 @@ class UserStateJsonExtensionsTest {
|
||||
email = "activeEmail",
|
||||
// This value is calculated from the userId
|
||||
avatarColorHex = "#ffecbc49",
|
||||
environment = Environment.Eu,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = false,
|
||||
),
|
||||
@@ -156,7 +162,9 @@ class UserStateJsonExtensionsTest {
|
||||
every { hasPremium } returns true
|
||||
},
|
||||
tokens = mockk(),
|
||||
settings = mockk(),
|
||||
settings = AccountJson.Settings(
|
||||
environmentUrlData = EnvironmentUrlDataJson.DEFAULT_EU,
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -354,6 +354,7 @@ private val ACTIVE_ACCOUNT_SUMMARY = AccountSummary(
|
||||
name = "Active User",
|
||||
email = "active@bitwarden.com",
|
||||
avatarColorHex = "#aa00aa",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.ACTIVE,
|
||||
)
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@ class LandingViewModelTest : BaseViewModelTest() {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
),
|
||||
@@ -160,6 +161,7 @@ class LandingViewModelTest : BaseViewModelTest() {
|
||||
name = "name",
|
||||
email = rememberedEmail,
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
)
|
||||
|
||||
@@ -176,6 +176,7 @@ private val ACTIVE_ACCOUNT_SUMMARY = AccountSummary(
|
||||
name = "Active User",
|
||||
email = "active@bitwarden.com",
|
||||
avatarColorHex = "#aa00aa",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.ACTIVE,
|
||||
)
|
||||
|
||||
|
||||
@@ -111,6 +111,7 @@ class LoginViewModelTest : BaseViewModelTest() {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
),
|
||||
|
||||
@@ -195,6 +195,7 @@ private val ACTIVE_ACCOUNT_SUMMARY = AccountSummary(
|
||||
name = "Active User",
|
||||
email = "active@bitwarden.com",
|
||||
avatarColorHex = "#aa00aa",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.ACTIVE,
|
||||
)
|
||||
|
||||
@@ -203,6 +204,7 @@ private val LOCKED_ACCOUNT_SUMMARY = AccountSummary(
|
||||
name = "Locked User",
|
||||
email = "locked@bitwarden.com",
|
||||
avatarColorHex = "#00aaaa",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.LOCKED,
|
||||
)
|
||||
|
||||
|
||||
@@ -100,6 +100,7 @@ class VaultUnlockViewModelTest : BaseViewModelTest() {
|
||||
name = "Other User",
|
||||
email = "active+test@bitwarden.com",
|
||||
avatarColorHex = "#00aaaa",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
),
|
||||
@@ -117,6 +118,7 @@ class VaultUnlockViewModelTest : BaseViewModelTest() {
|
||||
name = "Other User",
|
||||
email = "active+test@bitwarden.com",
|
||||
avatarColorHex = "#00aaaa",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.ACTIVE,
|
||||
),
|
||||
),
|
||||
@@ -285,6 +287,7 @@ private val DEFAULT_STATE: VaultUnlockState = VaultUnlockState(
|
||||
name = "Active User",
|
||||
email = "active@bitwarden.com",
|
||||
avatarColorHex = "#aa00aa",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.ACTIVE,
|
||||
),
|
||||
),
|
||||
@@ -303,6 +306,7 @@ private val DEFAULT_USER_STATE = UserState(
|
||||
userId = "activeUserId",
|
||||
name = "Active User",
|
||||
email = "active@bitwarden.com",
|
||||
environment = Environment.Us,
|
||||
avatarColorHex = "#aa00aa",
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.x8bit.bitwarden.ui.platform.feature.rootnav
|
||||
|
||||
import com.x8bit.bitwarden.data.auth.repository.AuthRepository
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.UserState
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.Environment
|
||||
import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
@@ -33,6 +34,7 @@ class RootNavViewModelTest : BaseViewModelTest() {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
),
|
||||
@@ -54,6 +56,7 @@ class RootNavViewModelTest : BaseViewModelTest() {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = false,
|
||||
),
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.x8bit.bitwarden.data.auth.repository.AuthRepository
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.BreachCountResult
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.UserState
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.DataState
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.Environment
|
||||
import com.x8bit.bitwarden.data.vault.repository.VaultRepository
|
||||
import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest
|
||||
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
||||
@@ -593,6 +594,7 @@ private val DEFAULT_USER_STATE: UserState = UserState(
|
||||
name = "Bit",
|
||||
email = "bitwarden@gmail.com",
|
||||
avatarColorHex = "#ff00ff",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
),
|
||||
|
||||
@@ -467,6 +467,7 @@ private val ACTIVE_ACCOUNT_SUMMARY = AccountSummary(
|
||||
name = "Active User",
|
||||
email = "active@bitwarden.com",
|
||||
avatarColorHex = "#aa00aa",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.ACTIVE,
|
||||
)
|
||||
|
||||
@@ -475,6 +476,7 @@ private val LOCKED_ACCOUNT_SUMMARY = AccountSummary(
|
||||
name = "Locked User",
|
||||
email = "locked@bitwarden.com",
|
||||
avatarColorHex = "#00aaaa",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.LOCKED,
|
||||
)
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.x8bit.bitwarden.data.auth.repository.model.SwitchAccountResult
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.UserState
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.UserState.SpecialCircumstance
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.DataState
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.Environment
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockCipherView
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockFolderView
|
||||
import com.x8bit.bitwarden.data.vault.repository.VaultRepository
|
||||
@@ -116,6 +117,7 @@ class VaultViewModelTest : BaseViewModelTest() {
|
||||
name = "Other User",
|
||||
email = "active@bitwarden.com",
|
||||
avatarColorHex = "#00aaaa",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
),
|
||||
@@ -132,6 +134,7 @@ class VaultViewModelTest : BaseViewModelTest() {
|
||||
name = "Other User",
|
||||
email = "active@bitwarden.com",
|
||||
avatarColorHex = "#00aaaa",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.ACTIVE,
|
||||
),
|
||||
),
|
||||
@@ -457,6 +460,7 @@ private val DEFAULT_USER_STATE = UserState(
|
||||
name = "Active User",
|
||||
email = "active@bitwarden.com",
|
||||
avatarColorHex = "#aa00aa",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
),
|
||||
@@ -465,6 +469,7 @@ private val DEFAULT_USER_STATE = UserState(
|
||||
name = "Locked User",
|
||||
email = "locked@bitwarden.com",
|
||||
avatarColorHex = "#00aaaa",
|
||||
environment = Environment.Us,
|
||||
isPremium = false,
|
||||
isVaultUnlocked = false,
|
||||
),
|
||||
@@ -481,6 +486,7 @@ private fun createMockVaultState(viewState: VaultState.ViewState): VaultState =
|
||||
name = "Active User",
|
||||
email = "active@bitwarden.com",
|
||||
avatarColorHex = "#aa00aa",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.ACTIVE,
|
||||
),
|
||||
AccountSummary(
|
||||
@@ -488,6 +494,7 @@ private fun createMockVaultState(viewState: VaultState.ViewState): VaultState =
|
||||
name = "Locked User",
|
||||
email = "locked@bitwarden.com",
|
||||
avatarColorHex = "#00aaaa",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.LOCKED,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.x8bit.bitwarden.ui.vault.feature.vault.util
|
||||
|
||||
import com.x8bit.bitwarden.data.auth.datasource.disk.model.EnvironmentUrlDataJson
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.UserState
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.Environment
|
||||
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Test
|
||||
@@ -15,6 +17,7 @@ class UserStateExtensionsTest {
|
||||
name = "activeName",
|
||||
email = "activeEmail",
|
||||
avatarColorHex = "activeAvatarColorHex",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.ACTIVE,
|
||||
),
|
||||
AccountSummary(
|
||||
@@ -22,6 +25,7 @@ class UserStateExtensionsTest {
|
||||
name = "lockedName",
|
||||
email = "lockedEmail",
|
||||
avatarColorHex = "lockedAvatarColorHex",
|
||||
environmentLabel = "bitwarden.eu",
|
||||
status = AccountSummary.Status.LOCKED,
|
||||
),
|
||||
AccountSummary(
|
||||
@@ -29,6 +33,7 @@ class UserStateExtensionsTest {
|
||||
name = "unlockedName",
|
||||
email = "unlockedEmail",
|
||||
avatarColorHex = "unlockedAvatarColorHex",
|
||||
environmentLabel = "vault.qa.bitwarden.pw",
|
||||
status = AccountSummary.Status.UNLOCKED,
|
||||
),
|
||||
),
|
||||
@@ -40,6 +45,7 @@ class UserStateExtensionsTest {
|
||||
name = "activeName",
|
||||
email = "activeEmail",
|
||||
avatarColorHex = "activeAvatarColorHex",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
),
|
||||
@@ -48,6 +54,7 @@ class UserStateExtensionsTest {
|
||||
name = "lockedName",
|
||||
email = "lockedEmail",
|
||||
avatarColorHex = "lockedAvatarColorHex",
|
||||
environment = Environment.Eu,
|
||||
isPremium = false,
|
||||
isVaultUnlocked = false,
|
||||
),
|
||||
@@ -56,6 +63,11 @@ class UserStateExtensionsTest {
|
||||
name = "unlockedName",
|
||||
email = "unlockedEmail",
|
||||
avatarColorHex = "unlockedAvatarColorHex",
|
||||
environment = Environment.SelfHosted(
|
||||
environmentUrlData = EnvironmentUrlDataJson(
|
||||
base = "https://vault.qa.bitwarden.pw",
|
||||
),
|
||||
),
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
),
|
||||
@@ -73,6 +85,7 @@ class UserStateExtensionsTest {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.ACTIVE,
|
||||
),
|
||||
UserState.Account(
|
||||
@@ -80,6 +93,7 @@ class UserStateExtensionsTest {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
)
|
||||
@@ -95,6 +109,7 @@ class UserStateExtensionsTest {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.LOCKED,
|
||||
),
|
||||
UserState.Account(
|
||||
@@ -102,6 +117,7 @@ class UserStateExtensionsTest {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environment = Environment.Us,
|
||||
isPremium = false,
|
||||
isVaultUnlocked = false,
|
||||
)
|
||||
@@ -117,6 +133,7 @@ class UserStateExtensionsTest {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environmentLabel = "bitwarden.eu",
|
||||
status = AccountSummary.Status.UNLOCKED,
|
||||
),
|
||||
UserState.Account(
|
||||
@@ -124,6 +141,7 @@ class UserStateExtensionsTest {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environment = Environment.Eu,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
)
|
||||
@@ -140,6 +158,7 @@ class UserStateExtensionsTest {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environmentLabel = "bitwarden.com",
|
||||
status = AccountSummary.Status.ACTIVE,
|
||||
),
|
||||
UserState(
|
||||
@@ -150,6 +169,7 @@ class UserStateExtensionsTest {
|
||||
name = "name",
|
||||
email = "email",
|
||||
avatarColorHex = "avatarColorHex",
|
||||
environment = Environment.Us,
|
||||
isPremium = true,
|
||||
isVaultUnlocked = true,
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user