Also request focus (keyboard is not shown on my device :/)

This commit is contained in:
Benoit Marty 2020-09-01 10:45:48 +02:00
parent 99343294c6
commit 35f854de5d
3 changed files with 10 additions and 3 deletions

View file

@ -27,12 +27,14 @@ import com.google.android.material.textfield.TextInputLayout
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.epoxy.VectorEpoxyHolder import im.vector.app.core.epoxy.VectorEpoxyHolder
import im.vector.app.core.extensions.setTextOrHide import im.vector.app.core.extensions.setTextOrHide
import im.vector.app.core.extensions.showKeyboard
@EpoxyModelClass(layout = R.layout.item_settings_edit_text) @EpoxyModelClass(layout = R.layout.item_settings_edit_text)
abstract class SettingsEditTextItem : EpoxyModelWithHolder<SettingsEditTextItem.Holder>() { abstract class SettingsEditTextItem : EpoxyModelWithHolder<SettingsEditTextItem.Holder>() {
@EpoxyAttribute var hint: String? = null @EpoxyAttribute var hint: String? = null
@EpoxyAttribute var value: String? = null @EpoxyAttribute var value: String? = null
@EpoxyAttribute var requestFocus = false
@EpoxyAttribute var descriptionText: String? = null @EpoxyAttribute var descriptionText: String? = null
@EpoxyAttribute var errorText: String? = null @EpoxyAttribute var errorText: String? = null
@EpoxyAttribute var inProgress: Boolean = false @EpoxyAttribute var inProgress: Boolean = false
@ -74,6 +76,9 @@ abstract class SettingsEditTextItem : EpoxyModelWithHolder<SettingsEditTextItem.
if (value != null) { if (value != null) {
holder.editText.setText(value) holder.editText.setText(value)
} }
if (requestFocus) {
holder.editText.showKeyboard(andRequestFocus = true)
}
} }
class Holder : VectorEpoxyHolder() { class Holder : VectorEpoxyHolder() {

View file

@ -136,8 +136,9 @@ class ThreePidsSettingsController @Inject constructor(
id("addingEmail") id("addingEmail")
inputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS) inputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS)
hint(stringProvider.getString(R.string.medium_email)) hint(stringProvider.getString(R.string.medium_email))
if (data.editTextReinitiator?.isTrue() == true) { if (data.editTextReinitiator.isTrue()) {
value("") value("")
requestFocus(true)
} }
errorText(data.uiState.error) errorText(data.uiState.error)
interactionListener(object : SettingsEditTextItem.Listener { interactionListener(object : SettingsEditTextItem.Listener {
@ -199,8 +200,9 @@ class ThreePidsSettingsController @Inject constructor(
id("addingMsisdn") id("addingMsisdn")
inputType(InputType.TYPE_CLASS_PHONE) inputType(InputType.TYPE_CLASS_PHONE)
hint(stringProvider.getString(R.string.medium_phone_number)) hint(stringProvider.getString(R.string.medium_phone_number))
if (data.editTextReinitiator?.isTrue() == true) { if (data.editTextReinitiator.isTrue()) {
value("") value("")
requestFocus(true)
} }
errorText(data.uiState.error) errorText(data.uiState.error)
interactionListener(object : SettingsEditTextItem.Listener { interactionListener(object : SettingsEditTextItem.Listener {

View file

@ -28,6 +28,6 @@ data class ThreePidsSettingsViewState(
val threePids: Async<List<ThreePid>> = Uninitialized, val threePids: Async<List<ThreePid>> = Uninitialized,
val pendingThreePids: Async<List<ThreePid>> = Uninitialized, val pendingThreePids: Async<List<ThreePid>> = Uninitialized,
val msisdnValidationRequests: Map<String, Async<Unit>> = emptyMap(), val msisdnValidationRequests: Map<String, Async<Unit>> = emptyMap(),
val editTextReinitiator: ReadOnceTrue? = null, val editTextReinitiator: ReadOnceTrue = ReadOnceTrue(),
val msisdnValidationReinitiator: Map<ThreePid, ReadOnceTrue> = emptyMap() val msisdnValidationReinitiator: Map<ThreePid, ReadOnceTrue> = emptyMap()
) : MvRxState ) : MvRxState