mirror of
https://github.com/bitwarden/android.git
synced 2026-03-22 20:41:29 -05:00
[PM-18545] Hide section when no unlock option are available (#4751)
This commit is contained in:
@@ -62,6 +62,7 @@ import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenUnlockWithPinS
|
||||
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
|
||||
import com.x8bit.bitwarden.ui.platform.composition.LocalBiometricsManager
|
||||
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
|
||||
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricSupportStatus
|
||||
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricsManager
|
||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
|
||||
@@ -228,17 +229,20 @@ fun AccountSecurityScreen(
|
||||
.fillMaxWidth(),
|
||||
)
|
||||
|
||||
Spacer(Modifier.height(16.dp))
|
||||
BitwardenListHeaderText(
|
||||
label = stringResource(id = R.string.unlock_options),
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.standardHorizontalMargin()
|
||||
.padding(horizontal = 16.dp),
|
||||
)
|
||||
Spacer(modifier = Modifier.height(height = 8.dp))
|
||||
|
||||
val biometricSupportStatus = biometricsManager.biometricSupportStatus
|
||||
if (biometricSupportStatus != BiometricSupportStatus.NOT_SUPPORTED ||
|
||||
!state.removeUnlockWithPinPolicyEnabled ||
|
||||
state.isUnlockWithPinEnabled) {
|
||||
Spacer(Modifier.height(16.dp))
|
||||
BitwardenListHeaderText(
|
||||
label = stringResource(id = R.string.unlock_options),
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.standardHorizontalMargin()
|
||||
.padding(horizontal = 16.dp),
|
||||
)
|
||||
Spacer(modifier = Modifier.height(height = 8.dp))
|
||||
}
|
||||
BitwardenUnlockWithBiometricsSwitch(
|
||||
biometricSupportStatus = biometricSupportStatus,
|
||||
isChecked = state.isUnlockWithBiometricsEnabled || showBiometricsPrompt,
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricsManager
|
||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||
import com.x8bit.bitwarden.ui.util.assertNoDialogExists
|
||||
import com.x8bit.bitwarden.ui.util.assertNoPopupExists
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.every
|
||||
import io.mockk.just
|
||||
import io.mockk.mockk
|
||||
@@ -241,6 +242,55 @@ class AccountSecurityScreenTest : BaseComposeTest() {
|
||||
composeTestRule.onNodeWithText("Unlock with Biometrics").assertIsOn()
|
||||
}
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
@Test
|
||||
fun `unlock option section should be displayed according to state if biometrics is available`() {
|
||||
val section = "UNLOCK OPTIONS"
|
||||
composeTestRule.onNodeWithText(section).performScrollTo().assertIsDisplayed()
|
||||
|
||||
mutableStateFlow.update {
|
||||
DEFAULT_STATE.copy(
|
||||
removeUnlockWithPinPolicyEnabled = true,
|
||||
isUnlockWithPinEnabled = true,
|
||||
)
|
||||
}
|
||||
composeTestRule.onNodeWithText(section).performScrollTo().assertIsDisplayed()
|
||||
|
||||
mutableStateFlow.update {
|
||||
DEFAULT_STATE.copy(
|
||||
removeUnlockWithPinPolicyEnabled = true,
|
||||
isUnlockWithPinEnabled = false,
|
||||
)
|
||||
}
|
||||
composeTestRule.onNodeWithText(section).performScrollTo().assertIsDisplayed()
|
||||
}
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
@Test
|
||||
fun `unlock option section should be displayed according to state if biometrics is not available`() {
|
||||
coEvery {
|
||||
biometricsManager.biometricSupportStatus
|
||||
} returns BiometricSupportStatus.NOT_SUPPORTED
|
||||
val section = "UNLOCK OPTIONS"
|
||||
|
||||
composeTestRule.onNodeWithText(section).performScrollTo().assertIsDisplayed()
|
||||
mutableStateFlow.update {
|
||||
DEFAULT_STATE.copy(
|
||||
removeUnlockWithPinPolicyEnabled = true,
|
||||
isUnlockWithPinEnabled = true,
|
||||
)
|
||||
}
|
||||
composeTestRule.onNodeWithText(section).performScrollTo().assertIsDisplayed()
|
||||
|
||||
mutableStateFlow.update {
|
||||
DEFAULT_STATE.copy(
|
||||
removeUnlockWithPinPolicyEnabled = true,
|
||||
isUnlockWithPinEnabled = false,
|
||||
)
|
||||
}
|
||||
composeTestRule.onNodeWithText(section).assertDoesNotExist()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `unlock with pin toggle should be displayed according to state`() {
|
||||
val toggleText = "Unlock with PIN code"
|
||||
|
||||
Reference in New Issue
Block a user