mirror of
https://github.com/bitwarden/android.git
synced 2024-10-31 15:15:34 +03:00
Move AccountSumary to ui package and make name nullable (#259)
This commit is contained in:
parent
c00c8ac022
commit
0a09facde0
11 changed files with 33 additions and 17 deletions
|
@ -5,7 +5,6 @@ import androidx.compose.ui.graphics.Color
|
||||||
import androidx.lifecycle.SavedStateHandle
|
import androidx.lifecycle.SavedStateHandle
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.x8bit.bitwarden.R
|
import com.x8bit.bitwarden.R
|
||||||
import com.x8bit.bitwarden.data.auth.repository.model.AccountSummary
|
|
||||||
import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository
|
import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository
|
||||||
import com.x8bit.bitwarden.data.vault.repository.VaultRepository
|
import com.x8bit.bitwarden.data.vault.repository.VaultRepository
|
||||||
import com.x8bit.bitwarden.data.vault.repository.model.VaultUnlockResult
|
import com.x8bit.bitwarden.data.vault.repository.model.VaultUnlockResult
|
||||||
|
@ -13,6 +12,7 @@ import com.x8bit.bitwarden.ui.platform.base.BaseViewModel
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.Text
|
import com.x8bit.bitwarden.ui.platform.base.util.Text
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.hexToColor
|
import com.x8bit.bitwarden.ui.platform.base.util.hexToColor
|
||||||
|
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
|
||||||
import com.x8bit.bitwarden.ui.platform.util.labelOrBaseUrlHost
|
import com.x8bit.bitwarden.ui.platform.util.labelOrBaseUrlHost
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
|
|
|
@ -37,9 +37,9 @@ import androidx.compose.ui.semantics.clearAndSetSemantics
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.core.graphics.toColorInt
|
import androidx.core.graphics.toColorInt
|
||||||
import com.x8bit.bitwarden.R
|
import com.x8bit.bitwarden.R
|
||||||
import com.x8bit.bitwarden.data.auth.repository.model.AccountSummary
|
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.lowercaseWithCurrentLocal
|
import com.x8bit.bitwarden.ui.platform.base.util.lowercaseWithCurrentLocal
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.toUnscaledTextUnit
|
import com.x8bit.bitwarden.ui.platform.base.util.toUnscaledTextUnit
|
||||||
|
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.vault.util.iconRes
|
import com.x8bit.bitwarden.ui.vault.feature.vault.util.iconRes
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.vault.util.initials
|
import com.x8bit.bitwarden.ui.vault.feature.vault.util.initials
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.vault.util.supportingTextResOrNull
|
import com.x8bit.bitwarden.ui.vault.feature.vault.util.supportingTextResOrNull
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package com.x8bit.bitwarden.data.auth.repository.model
|
package com.x8bit.bitwarden.ui.platform.components.model
|
||||||
|
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
|
@ -7,7 +7,7 @@ import kotlinx.parcelize.Parcelize
|
||||||
* Summary information about a user's account.
|
* Summary information about a user's account.
|
||||||
*
|
*
|
||||||
* @property userId The ID of the user.
|
* @property userId The ID of the user.
|
||||||
* @property name The full name of the user.
|
* @property name The full name of the user (if applicable).
|
||||||
* @property email The email of the user.
|
* @property email The email of the user.
|
||||||
* @property avatarColorHex Hex color value for a user's avatar in the "#AARRGGBB" format.
|
* @property avatarColorHex Hex color value for a user's avatar in the "#AARRGGBB" format.
|
||||||
* @property status The current status of the user's account locally.
|
* @property status The current status of the user's account locally.
|
||||||
|
@ -15,7 +15,7 @@ import kotlinx.parcelize.Parcelize
|
||||||
@Parcelize
|
@Parcelize
|
||||||
data class AccountSummary(
|
data class AccountSummary(
|
||||||
val userId: String,
|
val userId: String,
|
||||||
val name: String,
|
val name: String?,
|
||||||
val email: String,
|
val email: String,
|
||||||
val avatarColorHex: String,
|
val avatarColorHex: String,
|
||||||
val status: Status,
|
val status: Status,
|
|
@ -27,7 +27,6 @@ import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import com.x8bit.bitwarden.R
|
import com.x8bit.bitwarden.R
|
||||||
import com.x8bit.bitwarden.data.auth.repository.model.AccountSummary
|
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.EventsEffect
|
import com.x8bit.bitwarden.ui.platform.base.util.EventsEffect
|
||||||
import com.x8bit.bitwarden.ui.platform.components.BitwardenAccountActionItem
|
import com.x8bit.bitwarden.ui.platform.components.BitwardenAccountActionItem
|
||||||
import com.x8bit.bitwarden.ui.platform.components.BitwardenAccountSwitcher
|
import com.x8bit.bitwarden.ui.platform.components.BitwardenAccountSwitcher
|
||||||
|
@ -35,6 +34,7 @@ import com.x8bit.bitwarden.ui.platform.components.BitwardenMediumTopAppBar
|
||||||
import com.x8bit.bitwarden.ui.platform.components.BitwardenOverflowActionItem
|
import com.x8bit.bitwarden.ui.platform.components.BitwardenOverflowActionItem
|
||||||
import com.x8bit.bitwarden.ui.platform.components.BitwardenScaffold
|
import com.x8bit.bitwarden.ui.platform.components.BitwardenScaffold
|
||||||
import com.x8bit.bitwarden.ui.platform.components.BitwardenSearchActionItem
|
import com.x8bit.bitwarden.ui.platform.components.BitwardenSearchActionItem
|
||||||
|
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -6,7 +6,6 @@ import androidx.compose.ui.graphics.Color
|
||||||
import androidx.lifecycle.SavedStateHandle
|
import androidx.lifecycle.SavedStateHandle
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.x8bit.bitwarden.R
|
import com.x8bit.bitwarden.R
|
||||||
import com.x8bit.bitwarden.data.auth.repository.model.AccountSummary
|
|
||||||
import com.x8bit.bitwarden.data.platform.repository.model.DataState
|
import com.x8bit.bitwarden.data.platform.repository.model.DataState
|
||||||
import com.x8bit.bitwarden.data.vault.repository.VaultRepository
|
import com.x8bit.bitwarden.data.vault.repository.VaultRepository
|
||||||
import com.x8bit.bitwarden.data.vault.repository.model.VaultData
|
import com.x8bit.bitwarden.data.vault.repository.model.VaultData
|
||||||
|
@ -15,6 +14,7 @@ import com.x8bit.bitwarden.ui.platform.base.util.Text
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.concat
|
import com.x8bit.bitwarden.ui.platform.base.util.concat
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.hexToColor
|
import com.x8bit.bitwarden.ui.platform.base.util.hexToColor
|
||||||
|
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.vault.util.initials
|
import com.x8bit.bitwarden.ui.vault.feature.vault.util.initials
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toViewState
|
import com.x8bit.bitwarden.ui.vault.feature.vault.util.toViewState
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
|
|
@ -3,7 +3,7 @@ package com.x8bit.bitwarden.ui.vault.feature.vault.util
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import com.x8bit.bitwarden.R
|
import com.x8bit.bitwarden.R
|
||||||
import com.x8bit.bitwarden.data.auth.repository.model.AccountSummary
|
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given the [AccountSummary], returns the first two "initials" found when looking at the
|
* Given the [AccountSummary], returns the first two "initials" found when looking at the
|
||||||
|
@ -12,13 +12,17 @@ import com.x8bit.bitwarden.data.auth.repository.model.AccountSummary
|
||||||
* Ex:
|
* Ex:
|
||||||
* - "First Last" -> "FL"
|
* - "First Last" -> "FL"
|
||||||
* - "First Second Last" -> "FS"
|
* - "First Second Last" -> "FS"
|
||||||
|
* - `null` -> ".."
|
||||||
*/
|
*/
|
||||||
val AccountSummary.initials: String
|
val AccountSummary.initials: String
|
||||||
get() = this
|
get() = this
|
||||||
.name
|
.name
|
||||||
.split(" ")
|
?.let {
|
||||||
|
it.split(" ")
|
||||||
.take(2)
|
.take(2)
|
||||||
.joinToString(separator = "") { it.first().toString() }
|
.joinToString(separator = "") { it.first().toString() }
|
||||||
|
}
|
||||||
|
?: ".."
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Drawable resource to display for the given [AccountSummary].
|
* Drawable resource to display for the given [AccountSummary].
|
||||||
|
|
|
@ -7,9 +7,9 @@ import androidx.compose.ui.test.onNodeWithText
|
||||||
import androidx.compose.ui.test.performClick
|
import androidx.compose.ui.test.performClick
|
||||||
import androidx.compose.ui.test.performScrollTo
|
import androidx.compose.ui.test.performScrollTo
|
||||||
import androidx.compose.ui.test.performTextInput
|
import androidx.compose.ui.test.performTextInput
|
||||||
import com.x8bit.bitwarden.data.auth.repository.model.AccountSummary
|
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
||||||
|
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
|
|
|
@ -4,7 +4,6 @@ import androidx.lifecycle.SavedStateHandle
|
||||||
import app.cash.turbine.test
|
import app.cash.turbine.test
|
||||||
import com.x8bit.bitwarden.R
|
import com.x8bit.bitwarden.R
|
||||||
import com.x8bit.bitwarden.data.auth.datasource.disk.model.EnvironmentUrlDataJson
|
import com.x8bit.bitwarden.data.auth.datasource.disk.model.EnvironmentUrlDataJson
|
||||||
import com.x8bit.bitwarden.data.auth.repository.model.AccountSummary
|
|
||||||
import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository
|
import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository
|
||||||
import com.x8bit.bitwarden.data.platform.repository.model.Environment
|
import com.x8bit.bitwarden.data.platform.repository.model.Environment
|
||||||
import com.x8bit.bitwarden.data.platform.repository.util.FakeEnvironmentRepository
|
import com.x8bit.bitwarden.data.platform.repository.util.FakeEnvironmentRepository
|
||||||
|
@ -12,6 +11,7 @@ import com.x8bit.bitwarden.data.vault.repository.VaultRepository
|
||||||
import com.x8bit.bitwarden.data.vault.repository.model.VaultUnlockResult
|
import com.x8bit.bitwarden.data.vault.repository.model.VaultUnlockResult
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
||||||
|
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
|
||||||
import io.mockk.coEvery
|
import io.mockk.coEvery
|
||||||
import io.mockk.coVerify
|
import io.mockk.coVerify
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
|
|
|
@ -10,9 +10,9 @@ import androidx.compose.ui.test.onNodeWithContentDescription
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
import androidx.compose.ui.test.onNodeWithText
|
||||||
import androidx.compose.ui.test.performClick
|
import androidx.compose.ui.test.performClick
|
||||||
import androidx.compose.ui.test.performScrollToNode
|
import androidx.compose.ui.test.performScrollToNode
|
||||||
import com.x8bit.bitwarden.data.auth.repository.model.AccountSummary
|
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
||||||
|
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
|
|
|
@ -2,7 +2,6 @@ package com.x8bit.bitwarden.ui.vault.feature.vault
|
||||||
|
|
||||||
import androidx.lifecycle.SavedStateHandle
|
import androidx.lifecycle.SavedStateHandle
|
||||||
import app.cash.turbine.test
|
import app.cash.turbine.test
|
||||||
import com.x8bit.bitwarden.data.auth.repository.model.AccountSummary
|
|
||||||
import com.x8bit.bitwarden.data.platform.repository.model.DataState
|
import com.x8bit.bitwarden.data.platform.repository.model.DataState
|
||||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockCipherView
|
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.datasource.sdk.model.createMockFolderView
|
||||||
|
@ -10,6 +9,7 @@ import com.x8bit.bitwarden.data.vault.repository.VaultRepository
|
||||||
import com.x8bit.bitwarden.data.vault.repository.model.VaultData
|
import com.x8bit.bitwarden.data.vault.repository.model.VaultData
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest
|
import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest
|
||||||
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
||||||
|
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.x8bit.bitwarden.ui.vault.feature.vault.util
|
package com.x8bit.bitwarden.ui.vault.feature.vault.util
|
||||||
|
|
||||||
import com.x8bit.bitwarden.R
|
import com.x8bit.bitwarden.R
|
||||||
import com.x8bit.bitwarden.data.auth.repository.model.AccountSummary
|
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import org.junit.jupiter.api.Assertions.assertEquals
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
|
@ -10,8 +10,9 @@ import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
class AccountSummaryExtensionsTest {
|
class AccountSummaryExtensionsTest {
|
||||||
|
|
||||||
|
@Suppress("MaxLineLength")
|
||||||
@Test
|
@Test
|
||||||
fun `initials should return the starting letters of the first two words in the name`() {
|
fun `initials should return the starting letters of the first two words in the name if present`() {
|
||||||
assertEquals(
|
assertEquals(
|
||||||
"FS",
|
"FS",
|
||||||
mockk<AccountSummary>() {
|
mockk<AccountSummary>() {
|
||||||
|
@ -21,6 +22,17 @@ class AccountSummaryExtensionsTest {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `initials should return a default value if the name is not present`() {
|
||||||
|
assertEquals(
|
||||||
|
"..",
|
||||||
|
mockk<AccountSummary>() {
|
||||||
|
every { name } returns null
|
||||||
|
}
|
||||||
|
.initials,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `iconRes returns a checkmark for active accounts`() {
|
fun `iconRes returns a checkmark for active accounts`() {
|
||||||
assertEquals(
|
assertEquals(
|
||||||
|
|
Loading…
Reference in a new issue