From 5594489b6989c02405d76b21989dc3b5078082bf Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 31 Aug 2020 22:20:59 +0200 Subject: [PATCH] Optimisation and cleanup --- .../im/vector/app/core/extensions/ThreePid.kt | 3 +- .../discovery/DiscoverySettingsController.kt | 4 +- .../discovery/SettingsEditTextItem.kt | 10 ++-- .../threepids/ThreePidsSettingsController.kt | 46 ++++++++++++++----- .../threepids/ThreePidsSettingsFragment.kt | 3 +- 5 files changed, 47 insertions(+), 19 deletions(-) diff --git a/vector/src/main/java/im/vector/app/core/extensions/ThreePid.kt b/vector/src/main/java/im/vector/app/core/extensions/ThreePid.kt index 8afbfd0f63..5d91370963 100644 --- a/vector/src/main/java/im/vector/app/core/extensions/ThreePid.kt +++ b/vector/src/main/java/im/vector/app/core/extensions/ThreePid.kt @@ -17,6 +17,7 @@ package im.vector.app.core.extensions import com.google.i18n.phonenumbers.PhoneNumberUtil +import org.matrix.android.sdk.api.extensions.ensurePrefix import org.matrix.android.sdk.api.extensions.tryThis import org.matrix.android.sdk.api.session.identity.ThreePid @@ -25,7 +26,7 @@ fun ThreePid.getFormattedValue(): String { is ThreePid.Email -> email is ThreePid.Msisdn -> { tryThis(message = "Unable to parse the phone number") { - PhoneNumberUtil.getInstance().parse("+$msisdn", null) + PhoneNumberUtil.getInstance().parse(msisdn.ensurePrefix("+"), null) } ?.let { PhoneNumberUtil.getInstance().format(it, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL) diff --git a/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsController.kt b/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsController.kt index e68537a108..306d9bffd1 100644 --- a/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsController.kt +++ b/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsController.kt @@ -267,8 +267,8 @@ class DiscoverySettingsController @Inject constructor( } } - override fun onCodeChange(code: String) { - codes[pidInfo.threePid] = code + override fun onTextChange(text: String) { + codes[pidInfo.threePid] = text } }) } diff --git a/vector/src/main/java/im/vector/app/features/discovery/SettingsEditTextItem.kt b/vector/src/main/java/im/vector/app/features/discovery/SettingsEditTextItem.kt index 81d46373a2..8d199e4eda 100644 --- a/vector/src/main/java/im/vector/app/features/discovery/SettingsEditTextItem.kt +++ b/vector/src/main/java/im/vector/app/features/discovery/SettingsEditTextItem.kt @@ -31,15 +31,17 @@ import im.vector.app.core.extensions.setTextOrHide @EpoxyModelClass(layout = R.layout.item_settings_edit_text) abstract class SettingsEditTextItem : EpoxyModelWithHolder() { + @EpoxyAttribute var hint: String? = null @EpoxyAttribute var descriptionText: String? = null @EpoxyAttribute var errorText: String? = null @EpoxyAttribute var inProgress: Boolean = false + @EpoxyAttribute var inputType: Int? = null @EpoxyAttribute var interactionListener: Listener? = null - private val textChangeListener: (text: CharSequence?, start: Int, count: Int, after: Int) -> Unit = { code, _, _, _ -> - code?.let { interactionListener?.onCodeChange(it.toString()) } + private val textChangeListener: (text: CharSequence?, start: Int, count: Int, after: Int) -> Unit = { text, _, _, _ -> + text?.let { interactionListener?.onTextChange(it.toString()) } } private val editorActionListener = object : TextView.OnEditorActionListener { @@ -63,6 +65,8 @@ abstract class SettingsEditTextItem : EpoxyModelWithHolder { - formEditTextItem { + settingsEditTextItem { id("addingEmail") inputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS) hint(stringProvider.getString(R.string.medium_email)) - errorMessage(data.state.error) - onTextChange { currentInputValue = it } - showBottomSeparator(false) + errorText(data.state.error) + interactionListener(object : SettingsEditTextItem.Listener { + override fun onValidate() { + interactionListener?.doAddEmail(currentInputValue) + } + + override fun onTextChange(text: String) { + currentInputValue = text + } + }) } settingsContinueCancelItem { id("contAddingEmail") @@ -180,13 +188,20 @@ class ThreePidsSettingsController @Inject constructor( id("addingMsisdnInfo") helperText(stringProvider.getString(R.string.login_msisdn_notice)) } - formEditTextItem { + settingsEditTextItem { id("addingMsisdn") inputType(InputType.TYPE_CLASS_PHONE) hint(stringProvider.getString(R.string.medium_phone_number)) - errorMessage(data.state.error) - onTextChange { currentInputValue = it } - showBottomSeparator(false) + errorText(data.state.error) + interactionListener(object : SettingsEditTextItem.Listener { + override fun onValidate() { + interactionListener?.doAddMsisdn(currentInputValue) + } + + override fun onTextChange(text: String) { + currentInputValue = text + } + }) } settingsContinueCancelItem { id("contAddingMsisdn") @@ -234,12 +249,19 @@ class ThreePidsSettingsController @Inject constructor( message(stringProvider.getString(R.string.settings_text_message_sent, threePid.getFormattedValue())) colorProvider(colorProvider) } - formEditTextItem { + settingsEditTextItem { id("msisdnVerification${threePid.value}") inputType(InputType.TYPE_CLASS_NUMBER) hint(stringProvider.getString(R.string.settings_text_message_sent_hint)) - showBottomSeparator(false) - onTextChange { currentCodes[threePid] = it } + interactionListener(object : SettingsEditTextItem.Listener { + override fun onValidate() { + interactionListener?.submitCode(threePid, currentCodes[threePid] ?: "") + } + + override fun onTextChange(text: String) { + currentCodes[threePid] = text + } + }) } settingsContinueCancelItem { id("cont" + idPrefix + threePid.value) diff --git a/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsFragment.kt b/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsFragment.kt index 3c2704e59e..5c8e4e7b5d 100644 --- a/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsFragment.kt @@ -28,6 +28,7 @@ import im.vector.app.core.dialogs.withColoredButton import im.vector.app.core.extensions.cleanup import im.vector.app.core.extensions.configureWith import im.vector.app.core.extensions.exhaustive +import im.vector.app.core.extensions.getFormattedValue import im.vector.app.core.extensions.hideKeyboard import im.vector.app.core.extensions.isEmail import im.vector.app.core.extensions.isMsisdn @@ -158,7 +159,7 @@ class ThreePidsSettingsFragment @Inject constructor( override fun deleteThreePid(threePid: ThreePid) { AlertDialog.Builder(requireActivity()) - .setMessage(getString(R.string.settings_remove_three_pid_confirmation_content, threePid.value)) + .setMessage(getString(R.string.settings_remove_three_pid_confirmation_content, threePid.getFormattedValue())) .setPositiveButton(R.string.remove) { _, _ -> viewModel.handle(ThreePidsSettingsAction.DeleteThreePid(threePid)) }