mirror of
https://github.com/bitwarden/android.git
synced 2026-08-28 22:45:25 -05:00
PM-9017 updated the continue button state when switching 2FA method (#3530)
This commit is contained in:
+11
-2
@@ -465,7 +465,7 @@ class TwoFactorLoginViewModel @Inject constructor(
|
||||
)
|
||||
}
|
||||
}
|
||||
mutableStateFlow.update { it.copy(authMethod = action.authMethod) }
|
||||
updateAuthMethodRelatedState(action.authMethod)
|
||||
}
|
||||
|
||||
TwoFactorAuthMethod.AUTHENTICATOR_APP,
|
||||
@@ -476,11 +476,20 @@ class TwoFactorLoginViewModel @Inject constructor(
|
||||
TwoFactorAuthMethod.DUO_ORGANIZATION,
|
||||
TwoFactorAuthMethod.WEB_AUTH,
|
||||
-> {
|
||||
mutableStateFlow.update { it.copy(authMethod = action.authMethod) }
|
||||
updateAuthMethodRelatedState(action.authMethod)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateAuthMethodRelatedState(authMethod: TwoFactorAuthMethod) {
|
||||
mutableStateFlow.update {
|
||||
it.copy(
|
||||
authMethod = authMethod,
|
||||
isContinueButtonEnabled = authMethod.isContinueButtonEnabled,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify the input and attempt to authenticate with the code.
|
||||
*/
|
||||
|
||||
+21
-2
@@ -680,14 +680,33 @@ class TwoFactorLoginViewModelTest : BaseViewModelTest() {
|
||||
@Test
|
||||
fun `SelectAuthMethod with other method should update the state`() {
|
||||
val viewModel = createViewModel()
|
||||
|
||||
// To method with continue button enabled by default
|
||||
viewModel.trySendAction(
|
||||
TwoFactorLoginAction.SelectAuthMethod(
|
||||
TwoFactorAuthMethod.AUTHENTICATOR_APP,
|
||||
TwoFactorAuthMethod.DUO,
|
||||
),
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
DEFAULT_STATE.copy(
|
||||
authMethod = TwoFactorAuthMethod.AUTHENTICATOR_APP,
|
||||
authMethod = TwoFactorAuthMethod.DUO,
|
||||
isContinueButtonEnabled = true,
|
||||
),
|
||||
viewModel.stateFlow.value,
|
||||
)
|
||||
|
||||
// To method with continue button disabled by default
|
||||
viewModel.trySendAction(
|
||||
TwoFactorLoginAction.SelectAuthMethod(
|
||||
TwoFactorAuthMethod.YUBI_KEY,
|
||||
),
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
DEFAULT_STATE.copy(
|
||||
authMethod = TwoFactorAuthMethod.YUBI_KEY,
|
||||
isContinueButtonEnabled = false,
|
||||
),
|
||||
viewModel.stateFlow.value,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user