From acd5b656d2eabaa67ad18d5b8dae00937f6fe8b4 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 31 May 2021 17:13:29 +0200 Subject: [PATCH] Cleanup up this screen --- .../app/features/signout/soft/SoftLogoutController.kt | 7 ++++--- .../vector/app/features/signout/soft/SoftLogoutFragment.kt | 4 ++-- .../app/features/signout/soft/SoftLogoutViewModel.kt | 2 +- .../app/features/signout/soft/SoftLogoutViewState.kt | 2 +- .../features/signout/soft/epoxy/LoginPasswordFormItem.kt | 7 +++++-- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutController.kt b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutController.kt index 76f0fd7fd2..86cf6cc884 100644 --- a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutController.kt +++ b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutController.kt @@ -113,13 +113,14 @@ class SoftLogoutController @Inject constructor( loginPasswordFormItem { id("passwordForm") stringProvider(host.stringProvider) + passwordValue(state.enteredPassword) passwordShown(state.passwordShown) - submitEnabled(state.submitEnabled) + submitEnabled(state.enteredPassword.isNotEmpty()) onPasswordEdited { host.listener?.passwordEdited(it) } errorText((state.asyncLoginAction as? Fail)?.error?.let { host.errorFormatter.toHumanReadable(it) }) passwordRevealClickListener { host.listener?.revealPasswordClicked() } forgetPasswordClickListener { host.listener?.forgetPasswordClicked() } - submitClickListener { password -> host.listener?.signinSubmit(password) } + submitClickListener { host.listener?.submit() } } } is LoginMode.Sso -> { @@ -164,7 +165,7 @@ class SoftLogoutController @Inject constructor( interface Listener { fun retry() fun passwordEdited(password: String) - fun signinSubmit(password: String) + fun submit() fun signinFallbackSubmit() fun clearData() fun forgetPasswordClicked() diff --git a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutFragment.kt b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutFragment.kt index b40a02d3dd..9bbb844962 100644 --- a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutFragment.kt +++ b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutFragment.kt @@ -107,9 +107,9 @@ class SoftLogoutFragment @Inject constructor( softLogoutViewModel.handle(SoftLogoutAction.PasswordChanged(password)) } - override fun signinSubmit(password: String) { + override fun submit() = withState(softLogoutViewModel) { state -> cleanupUi() - softLogoutViewModel.handle(SoftLogoutAction.SignInAgain(password)) + softLogoutViewModel.handle(SoftLogoutAction.SignInAgain(state.enteredPassword)) } override fun signinFallbackSubmit() = withState(loginViewModel) { state -> diff --git a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt index 5fa14b7f08..b310d379c6 100644 --- a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt @@ -138,7 +138,7 @@ class SoftLogoutViewModel @AssistedInject constructor( setState { copy( asyncLoginAction = Uninitialized, - submitEnabled = action.password.isNotBlank() + enteredPassword = action.password ) } } diff --git a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewState.kt b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewState.kt index 50b576e920..4872bfff0c 100644 --- a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewState.kt +++ b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewState.kt @@ -32,7 +32,7 @@ data class SoftLogoutViewState( val userDisplayName: String, val hasUnsavedKeys: Boolean, val passwordShown: Boolean = false, - val submitEnabled: Boolean = false + val enteredPassword: String = "" ) : MvRxState { fun isLoading(): Boolean { diff --git a/vector/src/main/java/im/vector/app/features/signout/soft/epoxy/LoginPasswordFormItem.kt b/vector/src/main/java/im/vector/app/features/signout/soft/epoxy/LoginPasswordFormItem.kt index 33cfa9811b..0deb9d3508 100644 --- a/vector/src/main/java/im/vector/app/features/signout/soft/epoxy/LoginPasswordFormItem.kt +++ b/vector/src/main/java/im/vector/app/features/signout/soft/epoxy/LoginPasswordFormItem.kt @@ -31,6 +31,7 @@ import im.vector.app.core.epoxy.VectorEpoxyHolder import im.vector.app.core.epoxy.VectorEpoxyModel import im.vector.app.core.epoxy.addTextChangedListenerOnce import im.vector.app.core.epoxy.onClick +import im.vector.app.core.epoxy.setValueOnce import im.vector.app.core.extensions.showPassword import im.vector.app.core.platform.SimpleTextWatcher import im.vector.app.core.resources.StringProvider @@ -39,13 +40,14 @@ import im.vector.app.core.ui.views.RevealPasswordImageView @EpoxyModelClass(layout = R.layout.item_login_password_form) abstract class LoginPasswordFormItem : VectorEpoxyModel() { + @EpoxyAttribute var passwordValue: String = "" @EpoxyAttribute var passwordShown: Boolean = false @EpoxyAttribute var submitEnabled: Boolean = false @EpoxyAttribute var errorText: String? = null @EpoxyAttribute lateinit var stringProvider: StringProvider @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash) var passwordRevealClickListener: ClickListener? = null @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash) var forgetPasswordClickListener: ClickListener? = null - @EpoxyAttribute var submitClickListener: ((String) -> Unit)? = null + @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash) var submitClickListener: ClickListener? = null @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash) var onPasswordEdited: TextListener? = null private val textChangeListener = object : SimpleTextWatcher() { @@ -63,7 +65,8 @@ abstract class LoginPasswordFormItem : VectorEpoxyModel