mirror of
https://github.com/bitwarden/android.git
synced 2026-03-21 22:00:42 -05:00
[PM-9439] Use passkey icon for items with FIDO2 credentials in search results (#4541)
This commit is contained in:
@@ -11,6 +11,7 @@ import com.bitwarden.vault.CipherView
|
||||
import com.bitwarden.vault.CollectionView
|
||||
import com.bitwarden.vault.FolderView
|
||||
import com.x8bit.bitwarden.R
|
||||
import com.x8bit.bitwarden.data.autofill.util.isActiveWithFido2Credentials
|
||||
import com.x8bit.bitwarden.data.platform.util.SpecialCharWithPrecedenceComparator
|
||||
import com.x8bit.bitwarden.data.platform.util.subtitle
|
||||
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
||||
@@ -247,7 +248,7 @@ private fun CipherView.toIconData(
|
||||
login?.uris.toLoginIconData(
|
||||
baseIconUrl = baseIconUrl,
|
||||
isIconLoadingDisabled = isIconLoadingDisabled,
|
||||
usePasskeyDefaultIcon = false,
|
||||
usePasskeyDefaultIcon = this.isActiveWithFido2Credentials,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.bitwarden.vault.CollectionView
|
||||
import com.bitwarden.vault.FolderView
|
||||
import com.x8bit.bitwarden.R
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockCipherView
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockSdkFido2CredentialList
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockSendView
|
||||
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
||||
import com.x8bit.bitwarden.ui.platform.feature.search.SearchState
|
||||
@@ -458,6 +459,43 @@ class SearchTypeDataExtensionsTest {
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `CipherViews toViewState should usePasskeyDefaultIcon based on cipher fido2 credentials`() {
|
||||
mockkStatic(Uri::parse)
|
||||
every { Uri.parse(any()) } returns mockk {
|
||||
every { host } returns "www.mockuri.com"
|
||||
}
|
||||
val result = listOf(
|
||||
createMockCipherView(
|
||||
number = 1,
|
||||
fido2Credentials = createMockSdkFido2CredentialList(number = 1),
|
||||
),
|
||||
createMockCipherView(number = 2),
|
||||
).toViewState(
|
||||
searchTerm = "mock",
|
||||
baseIconUrl = "https://vault.bitwarden.com/icons",
|
||||
isIconLoadingDisabled = false,
|
||||
hasMasterPassword = true,
|
||||
isAutofill = false,
|
||||
isPremiumUser = true,
|
||||
isTotp = false,
|
||||
organizationPremiumStatusMap = emptyMap(),
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
SearchState.ViewState.Content(
|
||||
displayItems = listOf(
|
||||
createMockDisplayItemForCipher(
|
||||
number = 1,
|
||||
fallbackIconRes = R.drawable.ic_bw_passkey,
|
||||
),
|
||||
createMockDisplayItemForCipher(number = 2),
|
||||
),
|
||||
),
|
||||
result,
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `SendViews filterAndOrganize should return empty list when search term is blank`() {
|
||||
val sends = listOf(createMockSendView(number = 1))
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.x8bit.bitwarden.ui.platform.feature.search.util
|
||||
|
||||
import androidx.annotation.DrawableRes
|
||||
import com.bitwarden.send.SendType
|
||||
import com.bitwarden.vault.CipherType
|
||||
import com.x8bit.bitwarden.R
|
||||
@@ -16,6 +17,7 @@ fun createMockDisplayItemForCipher(
|
||||
number: Int,
|
||||
cipherType: CipherType = CipherType.LOGIN,
|
||||
isTotp: Boolean = false,
|
||||
@DrawableRes fallbackIconRes: Int = R.drawable.ic_globe,
|
||||
): SearchState.DisplayItem =
|
||||
when (cipherType) {
|
||||
CipherType.LOGIN -> {
|
||||
@@ -27,7 +29,7 @@ fun createMockDisplayItemForCipher(
|
||||
subtitleTestTag = "CipherSubTitleLabel",
|
||||
iconData = IconData.Network(
|
||||
uri = "https://vault.bitwarden.com/icons/www.mockuri.com/icon.png",
|
||||
fallbackIconRes = R.drawable.ic_globe,
|
||||
fallbackIconRes = fallbackIconRes,
|
||||
),
|
||||
extraIconList = listOf(
|
||||
IconRes(
|
||||
|
||||
Reference in New Issue
Block a user