[Pm-6702] Fix AppLink flow to complete registration

This commit is contained in:
André Bispo
2024-06-24 15:38:12 +01:00
parent 12db5ee610
commit ec8c1e36b6
3 changed files with 14 additions and 11 deletions

View File

@@ -75,15 +75,6 @@ class MainActivity : AppCompatActivity() {
}
}
}
val appLinkData: Uri? = intent.data
if (appLinkData != null && appLinkData.isHierarchical) {
mainViewModel.trySendAction(
action = MainAction.ReceiveNewIntent(
intent = intent,
),
)
}
}
override fun onNewIntent(intent: Intent) {

View File

@@ -12,6 +12,7 @@ import com.x8bit.bitwarden.data.auth.repository.model.PasswordStrengthResult
import com.x8bit.bitwarden.data.auth.repository.model.RegisterResult
import com.x8bit.bitwarden.data.auth.repository.util.CaptchaCallbackTokenResult
import com.x8bit.bitwarden.data.auth.repository.util.generateUriForCaptcha
import com.x8bit.bitwarden.data.platform.manager.SpecialCircumstanceManager
import com.x8bit.bitwarden.data.platform.manager.model.SpecialCircumstance
import com.x8bit.bitwarden.data.platform.manager.util.toFido2RequestOrNull
import com.x8bit.bitwarden.ui.auth.feature.completeregistration.CompleteRegistrationAction.CheckDataBreachesToggle
@@ -45,7 +46,8 @@ private const val MIN_PASSWORD_LENGTH = 12
@HiltViewModel
class CompleteRegistrationViewModel @Inject constructor(
savedStateHandle: SavedStateHandle,
private val authRepository: AuthRepository
private val authRepository: AuthRepository,
private val specialCircumstance: SpecialCircumstanceManager
) : BaseViewModel<CompleteRegistrationState, CompleteRegistrationEvent, CompleteRegistrationAction>(
initialState = savedStateHandle[KEY_STATE]
?: CompleteRegistrationState(
@@ -83,6 +85,12 @@ class CompleteRegistrationViewModel @Inject constructor(
.launchIn(viewModelScope)
}
override fun onCleared() {
// clean the specialCircumstance after being handled
specialCircumstance.specialCircumstance = null
super.onCleared()
}
override fun handleAction(action: CompleteRegistrationAction) {
when (action) {
is CompleteRegistrationAction.CreateAccountClick -> handleCreateAccountClick()

View File

@@ -72,6 +72,11 @@ class RootNavViewModel @Inject constructor(
userState?.activeAccount?.needsPasswordReset == true -> RootNavState.ResetPassword
specialCircumstance is SpecialCircumstance.CompleteRegistration -> {
// When the user is on the lock screen or already in the vault
if (userState?.activeAccount != null && !authRepository.hasPendingAccountAddition) {
authRepository.hasPendingAccountAddition = true
return
}
RootNavState.CompleteOngoingRegistration(
email = specialCircumstance.completeRegistrationData.email,
verificationToken = specialCircumstance.completeRegistrationData.verificationToken,
@@ -79,7 +84,6 @@ class RootNavViewModel @Inject constructor(
)
}
userState == null ||
!userState.activeAccount.isLoggedIn ||
userState.hasPendingAccountAddition -> RootNavState.Auth