From 3877b2f58ea3b39cc5b5d3590dcc5a7b403475c4 Mon Sep 17 00:00:00 2001 From: Onuray Sahin Date: Tue, 6 Oct 2020 17:02:49 +0300 Subject: [PATCH] Delete pending session store and states after session is created. --- CHANGES.md | 1 + .../im/vector/app/features/login/LoginViewModel.kt | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 85eb76f5f2..d2767d0174 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,6 +17,7 @@ Improvements 🙌: Bugfix 🐛: - Improve support for image/audio/video/file selection with intent changes (#1376) - Fix Splash layout on small screens + - Invalid popup when pressing back (#1635) Translations 🗣: - diff --git a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt index dc513d1666..81d6a78123 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt @@ -419,10 +419,15 @@ class LoginViewModel @AssistedInject constructor( loginConfig = action.loginConfig // If there is a pending email validation continue on this step - currentThreePid?.let { - if (isRegistrationStarted) { - handle(LoginAction.PostViewEvent(LoginViewEvents.OnSendEmailSuccess(it))) + try { + if (registrationWizard?.isRegistrationStarted == true) { + currentThreePid?.let { + handle(LoginAction.PostViewEvent(LoginViewEvents.OnSendEmailSuccess(it))) + } } + } catch (e: Throwable) { + // NOOP. API is designed to use wizards in a login/registration flow, + // but we need to check the state anyway. } } @@ -679,6 +684,7 @@ class LoginViewModel @AssistedInject constructor( private fun onSessionCreated(session: Session) { activeSessionHolder.setActiveSession(session) + authenticationService.reset() session.configureAndStart(applicationContext) setState { copy( @@ -747,7 +753,7 @@ class LoginViewModel @AssistedInject constructor( override fun onSuccess(data: LoginFlowResult) { when (data) { - is LoginFlowResult.Success -> { + is LoginFlowResult.Success -> { val loginMode = when { // SSO login is taken first data.supportedLoginTypes.contains(LoginFlowTypes.SSO) -> LoginMode.Sso