diff --git a/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutController.kt b/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutController.kt index 36b2f199e3..4f686a4a76 100644 --- a/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutController.kt +++ b/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutController.kt @@ -110,18 +110,24 @@ class SoftLogoutController @Inject constructor( errorText((state.asyncLoginAction as? Fail)?.error?.let { errorFormatter.toHumanReadable(it) }) passwordRevealClickListener { listener?.revealPasswordClicked() } forgetPasswordClickListener { listener?.forgetPasswordClicked() } - submitClickListener { password -> listener?.submit(password) } + submitClickListener { password -> listener?.signinSubmit(password) } } } LoginMode.Sso -> { loginCenterButtonItem { id("sso") text(stringProvider.getString(R.string.login_signin_sso)) - listener { listener?.ssoSubmit() } + listener { listener?.signinFallbackSubmit() } + } + } + LoginMode.Unsupported -> { + loginCenterButtonItem { + id("fallback") + text(stringProvider.getString(R.string.login_signin)) + listener { listener?.signinFallbackSubmit() } } } LoginMode.Unknown -> Unit // Should not happen - LoginMode.Unsupported -> Unit // Should not happen } } } @@ -146,8 +152,8 @@ class SoftLogoutController @Inject constructor( interface Listener { fun retry() fun passwordEdited(password: String) - fun submit(password: String) - fun ssoSubmit() + fun signinSubmit(password: String) + fun signinFallbackSubmit() fun clearData() fun forgetPasswordClicked() fun revealPasswordClicked() diff --git a/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutFragment.kt b/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutFragment.kt index b0de9200b0..1c7799f131 100644 --- a/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutFragment.kt @@ -59,12 +59,16 @@ class SoftLogoutFragment @Inject constructor( softLogoutViewModel.subscribe(this) { softLogoutViewState -> softLogoutController.update(softLogoutViewState) - if (softLogoutViewState.asyncHomeServerLoginFlowRequest.invoke() == LoginMode.Sso) { - // Prepare the loginViewModel for a SSO recovery - loginViewModel.handle(LoginAction.SetupSsoForSessionRecovery( - softLogoutViewState.homeServerUrl, - softLogoutViewState.deviceId - )) + when (softLogoutViewState.asyncHomeServerLoginFlowRequest.invoke()) { + LoginMode.Sso, + LoginMode.Unsupported -> { + // Prepare the loginViewModel for a SSO/login fallback recovery + loginViewModel.handle(LoginAction.SetupSsoForSessionRecovery( + softLogoutViewState.homeServerUrl, + softLogoutViewState.deviceId + )) + } + else -> Unit } } } @@ -88,12 +92,12 @@ class SoftLogoutFragment @Inject constructor( softLogoutViewModel.handle(SoftLogoutAction.PasswordChanged(password)) } - override fun submit(password: String) { + override fun signinSubmit(password: String) { cleanupUi() softLogoutViewModel.handle(SoftLogoutAction.SignInAgain(password)) } - override fun ssoSubmit() { + override fun signinFallbackSubmit() { loginSharedActionViewModel.post(LoginNavigation.OnSignModeSelected) } diff --git a/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutViewModel.kt b/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutViewModel.kt index 8e4b053e9c..4b604385fe 100644 --- a/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/signout/soft/SoftLogoutViewModel.kt @@ -111,8 +111,7 @@ class SoftLogoutViewModel @AssistedInject constructor( else -> LoginMode.Unsupported } - if ((loginMode == LoginMode.Password && !data.isLoginAndRegistrationSupported) - || loginMode == LoginMode.Unsupported) { + if (loginMode == LoginMode.Password && !data.isLoginAndRegistrationSupported) { notSupported() } else { setState {