From ec8c1e36b6d483faf062dbf2f9d33524f75f4444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Bispo?= Date: Mon, 24 Jun 2024 15:38:12 +0100 Subject: [PATCH] [Pm-6702] Fix AppLink flow to complete registration --- app/src/main/java/com/x8bit/bitwarden/MainActivity.kt | 9 --------- .../CompleteRegistrationViewModel.kt | 10 +++++++++- .../ui/platform/feature/rootnav/RootNavViewModel.kt | 6 +++++- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/MainActivity.kt b/app/src/main/java/com/x8bit/bitwarden/MainActivity.kt index bd196dc3be..fd121b602b 100644 --- a/app/src/main/java/com/x8bit/bitwarden/MainActivity.kt +++ b/app/src/main/java/com/x8bit/bitwarden/MainActivity.kt @@ -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) { diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/completeregistration/CompleteRegistrationViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/completeregistration/CompleteRegistrationViewModel.kt index 6e6c264a4f..68a8400b42 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/completeregistration/CompleteRegistrationViewModel.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/completeregistration/CompleteRegistrationViewModel.kt @@ -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( 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() diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModel.kt index 01e03fb22f..d4c41cd408 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModel.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/rootnav/RootNavViewModel.kt @@ -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