diff --git a/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt b/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt index 52efe128fb..058c2b268a 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt @@ -112,7 +112,7 @@ open class LoginActivity : VectorBaseActivity(), ToolbarConfigurable, UnlockedAc private fun handleLoginViewEvents(loginViewEvents: LoginViewEvents) { when (loginViewEvents) { - is LoginViewEvents.RegistrationFlowResult -> { + is LoginViewEvents.RegistrationFlowResult -> { // Check that all flows are supported by the application if (loginViewEvents.flowResult.missingStages.any { !it.isSupported() }) { // Display a popup to propose use web fallback @@ -133,7 +133,7 @@ open class LoginActivity : VectorBaseActivity(), ToolbarConfigurable, UnlockedAc } } } - is LoginViewEvents.OutdatedHomeserver -> { + is LoginViewEvents.OutdatedHomeserver -> { AlertDialog.Builder(this) .setTitle(R.string.login_error_outdated_homeserver_title) .setMessage(R.string.login_error_outdated_homeserver_warning_content) @@ -141,7 +141,7 @@ open class LoginActivity : VectorBaseActivity(), ToolbarConfigurable, UnlockedAc .show() Unit } - is LoginViewEvents.OpenServerSelection -> + is LoginViewEvents.OpenServerSelection -> addFragmentToBackstack(R.id.loginFragmentContainer, LoginServerSelectionFragment::class.java, option = { ft -> @@ -153,24 +153,24 @@ open class LoginActivity : VectorBaseActivity(), ToolbarConfigurable, UnlockedAc // TODO Disabled because it provokes a flickering // ft.setCustomAnimations(enterAnim, exitAnim, popEnterAnim, popExitAnim) }) - is LoginViewEvents.OnServerSelectionDone -> onServerSelectionDone(loginViewEvents) - is LoginViewEvents.OnSignModeSelected -> onSignModeSelected(loginViewEvents) - is LoginViewEvents.OnLoginFlowRetrieved -> + is LoginViewEvents.OnServerSelectionDone -> onServerSelectionDone(loginViewEvents) + is LoginViewEvents.OnSignModeSelected -> onSignModeSelected(loginViewEvents) + is LoginViewEvents.OnLoginFlowRetrieved -> addFragmentToBackstack(R.id.loginFragmentContainer, LoginSignUpSignInSelectionFragment::class.java, option = commonOption) - is LoginViewEvents.OnWebLoginError -> onWebLoginError(loginViewEvents) - is LoginViewEvents.OnForgetPasswordClicked -> + is LoginViewEvents.OnWebLoginError -> onWebLoginError(loginViewEvents) + is LoginViewEvents.OnForgetPasswordClicked -> addFragmentToBackstack(R.id.loginFragmentContainer, LoginResetPasswordFragment::class.java, option = commonOption) - is LoginViewEvents.OnResetPasswordSendThreePidDone -> { + is LoginViewEvents.OnResetPasswordSendThreePidDone -> { supportFragmentManager.popBackStack(FRAGMENT_LOGIN_TAG, POP_BACK_STACK_EXCLUSIVE) addFragmentToBackstack(R.id.loginFragmentContainer, LoginResetPasswordMailConfirmationFragment::class.java, option = commonOption) } - is LoginViewEvents.OnResetPasswordMailConfirmationSuccess -> { + is LoginViewEvents.OnResetPasswordMailConfirmationSuccess -> { supportFragmentManager.popBackStack(FRAGMENT_LOGIN_TAG, POP_BACK_STACK_EXCLUSIVE) addFragmentToBackstack(R.id.loginFragmentContainer, LoginResetPasswordSuccessFragment::class.java, @@ -180,20 +180,20 @@ open class LoginActivity : VectorBaseActivity(), ToolbarConfigurable, UnlockedAc // Go back to the login fragment supportFragmentManager.popBackStack(FRAGMENT_LOGIN_TAG, POP_BACK_STACK_EXCLUSIVE) } - is LoginViewEvents.OnSendEmailSuccess -> + is LoginViewEvents.OnSendEmailSuccess -> addFragmentToBackstack(R.id.loginFragmentContainer, LoginWaitForEmailFragment::class.java, LoginWaitForEmailFragmentArgument(loginViewEvents.email), tag = FRAGMENT_REGISTRATION_STAGE_TAG, option = commonOption) - is LoginViewEvents.OnSendMsisdnSuccess -> + is LoginViewEvents.OnSendMsisdnSuccess -> addFragmentToBackstack(R.id.loginFragmentContainer, LoginGenericTextInputFormFragment::class.java, LoginGenericTextInputFormFragmentArgument(TextInputFormFragmentMode.ConfirmMsisdn, true, loginViewEvents.msisdn), tag = FRAGMENT_REGISTRATION_STAGE_TAG, option = commonOption) is LoginViewEvents.Failure, - is LoginViewEvents.Loading -> + is LoginViewEvents.Loading -> // This is handled by the Fragments Unit }.exhaustive @@ -230,21 +230,21 @@ open class LoginActivity : VectorBaseActivity(), ToolbarConfigurable, UnlockedAc when (loginViewEvents.serverType) { ServerType.MatrixOrg -> Unit // In this case, we wait for the login flow ServerType.EMS, - ServerType.Other -> addFragmentToBackstack(R.id.loginFragmentContainer, + ServerType.Other -> addFragmentToBackstack(R.id.loginFragmentContainer, LoginServerUrlFormFragment::class.java, option = commonOption) - ServerType.Unknown -> Unit /* Should not happen */ + ServerType.Unknown -> Unit /* Should not happen */ } } private fun onSignModeSelected(loginViewEvents: LoginViewEvents.OnSignModeSelected) = withState(loginViewModel) { state -> // state.signMode could not be ready yet. So use value from the ViewEvent when (loginViewEvents.signMode) { - SignMode.Unknown -> error("Sign mode has to be set before calling this method") - SignMode.SignUp -> { + SignMode.Unknown -> error("Sign mode has to be set before calling this method") + SignMode.SignUp -> { // This is managed by the LoginViewEvents } - SignMode.SignIn -> { + SignMode.SignIn -> { // It depends on the LoginMode when (state.loginMode) { LoginMode.Unknown, @@ -328,17 +328,17 @@ open class LoginActivity : VectorBaseActivity(), ToolbarConfigurable, UnlockedAc LoginCaptchaFragmentArgument(stage.publicKey), tag = FRAGMENT_REGISTRATION_STAGE_TAG, option = commonOption) - is Stage.Email -> addFragmentToBackstack(R.id.loginFragmentContainer, + is Stage.Email -> addFragmentToBackstack(R.id.loginFragmentContainer, LoginGenericTextInputFormFragment::class.java, LoginGenericTextInputFormFragmentArgument(TextInputFormFragmentMode.SetEmail, stage.mandatory), tag = FRAGMENT_REGISTRATION_STAGE_TAG, option = commonOption) - is Stage.Msisdn -> addFragmentToBackstack(R.id.loginFragmentContainer, + is Stage.Msisdn -> addFragmentToBackstack(R.id.loginFragmentContainer, LoginGenericTextInputFormFragment::class.java, LoginGenericTextInputFormFragmentArgument(TextInputFormFragmentMode.SetMsisdn, stage.mandatory), tag = FRAGMENT_REGISTRATION_STAGE_TAG, option = commonOption) - is Stage.Terms -> addFragmentToBackstack(R.id.loginFragmentContainer, + is Stage.Terms -> addFragmentToBackstack(R.id.loginFragmentContainer, LoginTermsFragment::class.java, LoginTermsFragmentArgument(stage.policies.toLocalizedLoginTerms(getString(R.string.resources_language))), tag = FRAGMENT_REGISTRATION_STAGE_TAG, diff --git a/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt index 10c5fd59a7..7d98f1f8ee 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt @@ -80,8 +80,8 @@ class LoginFragment @Inject constructor() : AbstractSSOLoginFragment() { private fun setupAutoFill(state: LoginViewState) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { when (state.signMode) { - SignMode.Unknown -> error("developer error") - SignMode.SignUp -> { + SignMode.Unknown -> error("developer error") + SignMode.SignUp -> { loginField.setAutofillHints(HintConstants.AUTOFILL_HINT_NEW_USERNAME) passwordField.setAutofillHints(HintConstants.AUTOFILL_HINT_NEW_PASSWORD) loginSocialLoginButtons.mode = SocialLoginButtonsView.Mode.MODE_SIGN_UP @@ -145,9 +145,9 @@ class LoginFragment @Inject constructor() : AbstractSSOLoginFragment() { loginPasswordNotice.isVisible = true } else { val resId = when (state.signMode) { - SignMode.Unknown -> error("developer error") - SignMode.SignUp -> R.string.login_signup_to - SignMode.SignIn -> R.string.login_connect_to + SignMode.Unknown -> error("developer error") + SignMode.SignUp -> R.string.login_signup_to + SignMode.SignIn -> R.string.login_connect_to SignMode.SignInWithMatrixId -> R.string.login_connect_to } @@ -158,18 +158,18 @@ class LoginFragment @Inject constructor() : AbstractSSOLoginFragment() { loginTitle.text = getString(resId, state.homeServerUrl.toReducedUrl()) loginNotice.text = getString(R.string.login_server_matrix_org_text) } - ServerType.EMS -> { + ServerType.EMS -> { loginServerIcon.isVisible = true loginServerIcon.setImageResource(R.drawable.ic_logo_element_matrix_services) loginTitle.text = getString(resId, "Element Matrix Services") loginNotice.text = getString(R.string.login_server_modular_text) } - ServerType.Other -> { + ServerType.Other -> { loginServerIcon.isVisible = false loginTitle.text = getString(resId, state.homeServerUrl.toReducedUrl()) loginNotice.text = getString(R.string.login_server_other_text) } - ServerType.Unknown -> Unit /* Should not happen */ + ServerType.Unknown -> Unit /* Should not happen */ } loginPasswordNotice.isVisible = false @@ -273,7 +273,7 @@ class LoginFragment @Inject constructor() : AbstractSSOLoginFragment() { passwordShown = false renderPasswordField() } - is Fail -> { + is Fail -> { val error = state.asyncLoginAction.error if (error is Failure.ServerError && error.error.code == MatrixError.M_FORBIDDEN 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 2377f89aa8..7b7d7c6a1c 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 @@ -88,7 +88,7 @@ class LoginViewModel @AssistedInject constructor( @JvmStatic override fun create(viewModelContext: ViewModelContext, state: LoginViewState): LoginViewModel? { return when (val activity: FragmentActivity = (viewModelContext as ActivityViewModelContext).activity()) { - is LoginActivity -> activity.loginViewModelFactory.create(state) + is LoginActivity -> activity.loginViewModelFactory.create(state) is SoftLogoutActivity -> activity.loginViewModelFactory.create(state) else -> error("Invalid Activity") } @@ -120,20 +120,20 @@ class LoginViewModel @AssistedInject constructor( override fun handle(action: LoginAction) { when (action) { - is LoginAction.UpdateServerType -> handleUpdateServerType(action) - is LoginAction.UpdateSignMode -> handleUpdateSignMode(action) - is LoginAction.InitWith -> handleInitWith(action) - is LoginAction.UpdateHomeServer -> handleUpdateHomeserver(action).also { lastAction = action } - is LoginAction.LoginOrRegister -> handleLoginOrRegister(action).also { lastAction = action } - is LoginAction.LoginWithToken -> handleLoginWithToken(action) - is LoginAction.WebLoginSuccess -> handleWebLoginSuccess(action) - is LoginAction.ResetPassword -> handleResetPassword(action) + is LoginAction.UpdateServerType -> handleUpdateServerType(action) + is LoginAction.UpdateSignMode -> handleUpdateSignMode(action) + is LoginAction.InitWith -> handleInitWith(action) + is LoginAction.UpdateHomeServer -> handleUpdateHomeserver(action).also { lastAction = action } + is LoginAction.LoginOrRegister -> handleLoginOrRegister(action).also { lastAction = action } + is LoginAction.LoginWithToken -> handleLoginWithToken(action) + is LoginAction.WebLoginSuccess -> handleWebLoginSuccess(action) + is LoginAction.ResetPassword -> handleResetPassword(action) is LoginAction.ResetPasswordMailConfirmed -> handleResetPasswordMailConfirmed() - is LoginAction.RegisterAction -> handleRegisterAction(action) - is LoginAction.ResetAction -> handleResetAction(action) + is LoginAction.RegisterAction -> handleRegisterAction(action) + is LoginAction.ResetAction -> handleResetAction(action) is LoginAction.SetupSsoForSessionRecovery -> handleSetupSsoForSessionRecovery(action) - is LoginAction.UserAcceptCertificate -> handleUserAcceptCertificate(action) - is LoginAction.PostViewEvent -> _viewEvents.post(action.viewEvent) + is LoginAction.UserAcceptCertificate -> handleUserAcceptCertificate(action) + is LoginAction.PostViewEvent -> _viewEvents.post(action.viewEvent) }.exhaustive } @@ -147,7 +147,7 @@ class LoginViewModel @AssistedInject constructor( ?.let { it.copy(allowedFingerprints = it.allowedFingerprints + action.fingerprint) } ?.let { getLoginFlow(it) } } - is LoginAction.LoginOrRegister -> + is LoginAction.LoginOrRegister -> handleDirectLogin( finalLastAction, HomeServerConnectionConfig.Builder() @@ -214,14 +214,14 @@ class LoginViewModel @AssistedInject constructor( private fun handleRegisterAction(action: LoginAction.RegisterAction) { when (action) { - is LoginAction.CaptchaDone -> handleCaptchaDone(action) - is LoginAction.AcceptTerms -> handleAcceptTerms() - is LoginAction.RegisterDummy -> handleRegisterDummy() - is LoginAction.AddThreePid -> handleAddThreePid(action) - is LoginAction.SendAgainThreePid -> handleSendAgainThreePid() - is LoginAction.ValidateThreePid -> handleValidateThreePid(action) + is LoginAction.CaptchaDone -> handleCaptchaDone(action) + is LoginAction.AcceptTerms -> handleAcceptTerms() + is LoginAction.RegisterDummy -> handleRegisterDummy() + is LoginAction.AddThreePid -> handleAddThreePid(action) + is LoginAction.SendAgainThreePid -> handleSendAgainThreePid() + is LoginAction.ValidateThreePid -> handleValidateThreePid(action) is LoginAction.CheckIfEmailHasBeenValidated -> handleCheckIfEmailHasBeenValidated(action) - is LoginAction.StopEmailValidationCheck -> handleStopEmailValidationCheck() + is LoginAction.StopEmailValidationCheck -> handleStopEmailValidationCheck() } } @@ -258,7 +258,7 @@ class LoginViewModel @AssistedInject constructor( } when (data) { - is RegistrationResult.Success -> onSessionCreated(data.session) + is RegistrationResult.Success -> onSessionCreated(data.session) is RegistrationResult.FlowResponse -> onFlowResponse(data.flowResult) } } @@ -358,7 +358,7 @@ class LoginViewModel @AssistedInject constructor( ) } } - LoginAction.ResetHomeServerUrl -> { + LoginAction.ResetHomeServerUrl -> { authenticationService.reset() setState { @@ -371,7 +371,7 @@ class LoginViewModel @AssistedInject constructor( ) } } - LoginAction.ResetSignMode -> { + LoginAction.ResetSignMode -> { setState { copy( asyncHomeServerLoginFlowRequest = Uninitialized, @@ -381,7 +381,7 @@ class LoginViewModel @AssistedInject constructor( ) } } - LoginAction.ResetLogin -> { + LoginAction.ResetLogin -> { authenticationService.cancelPendingLoginOrRegistration() setState { @@ -391,7 +391,7 @@ class LoginViewModel @AssistedInject constructor( ) } } - LoginAction.ResetResetPassword -> { + LoginAction.ResetResetPassword -> { setState { copy( asyncResetPassword = Uninitialized, @@ -411,10 +411,10 @@ class LoginViewModel @AssistedInject constructor( } when (action.signMode) { - SignMode.SignUp -> startRegistrationFlow() - SignMode.SignIn -> startAuthenticationFlow() + SignMode.SignUp -> startRegistrationFlow() + SignMode.SignIn -> startAuthenticationFlow() SignMode.SignInWithMatrixId -> _viewEvents.post(LoginViewEvents.OnSignModeSelected(SignMode.SignInWithMatrixId)) - SignMode.Unknown -> Unit + SignMode.Unknown -> Unit } } @@ -426,12 +426,12 @@ class LoginViewModel @AssistedInject constructor( } when (action.serverType) { - ServerType.Unknown -> Unit /* Should not happen */ + ServerType.Unknown -> Unit /* Should not happen */ ServerType.MatrixOrg -> // Request login flow here handle(LoginAction.UpdateHomeServer(matrixOrgUrl)) ServerType.EMS, - ServerType.Other -> _viewEvents.post(LoginViewEvents.OnServerSelectionDone(action.serverType)) + ServerType.Other -> _viewEvents.post(LoginViewEvents.OnServerSelectionDone(action.serverType)) }.exhaustive } @@ -535,9 +535,9 @@ class LoginViewModel @AssistedInject constructor( private fun handleLoginOrRegister(action: LoginAction.LoginOrRegister) = withState { state -> when (state.signMode) { - SignMode.Unknown -> error("Developer error, invalid sign mode") - SignMode.SignIn -> handleLogin(action) - SignMode.SignUp -> handleRegisterWith(action) + SignMode.Unknown -> error("Developer error, invalid sign mode") + SignMode.SignIn -> handleLogin(action) + SignMode.SignUp -> handleRegisterWith(action) SignMode.SignInWithMatrixId -> handleDirectLogin(action, null) }.exhaustive }