mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-10 00:50:49 +01:00
Optimisation and cleanup
This commit is contained in:
parent
ddb858380e
commit
5594489b69
@ -17,6 +17,7 @@
|
|||||||
package im.vector.app.core.extensions
|
package im.vector.app.core.extensions
|
||||||
|
|
||||||
import com.google.i18n.phonenumbers.PhoneNumberUtil
|
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.extensions.tryThis
|
||||||
import org.matrix.android.sdk.api.session.identity.ThreePid
|
import org.matrix.android.sdk.api.session.identity.ThreePid
|
||||||
|
|
||||||
@ -25,7 +26,7 @@ fun ThreePid.getFormattedValue(): String {
|
|||||||
is ThreePid.Email -> email
|
is ThreePid.Email -> email
|
||||||
is ThreePid.Msisdn -> {
|
is ThreePid.Msisdn -> {
|
||||||
tryThis(message = "Unable to parse the phone number") {
|
tryThis(message = "Unable to parse the phone number") {
|
||||||
PhoneNumberUtil.getInstance().parse("+$msisdn", null)
|
PhoneNumberUtil.getInstance().parse(msisdn.ensurePrefix("+"), null)
|
||||||
}
|
}
|
||||||
?.let {
|
?.let {
|
||||||
PhoneNumberUtil.getInstance().format(it, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL)
|
PhoneNumberUtil.getInstance().format(it, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL)
|
||||||
|
@ -267,8 +267,8 @@ class DiscoverySettingsController @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCodeChange(code: String) {
|
override fun onTextChange(text: String) {
|
||||||
codes[pidInfo.threePid] = code
|
codes[pidInfo.threePid] = text
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -31,15 +31,17 @@ import im.vector.app.core.extensions.setTextOrHide
|
|||||||
@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 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
|
||||||
|
@EpoxyAttribute var inputType: Int? = null
|
||||||
|
|
||||||
@EpoxyAttribute
|
@EpoxyAttribute
|
||||||
var interactionListener: Listener? = null
|
var interactionListener: Listener? = null
|
||||||
|
|
||||||
private val textChangeListener: (text: CharSequence?, start: Int, count: Int, after: Int) -> Unit = { code, _, _, _ ->
|
private val textChangeListener: (text: CharSequence?, start: Int, count: Int, after: Int) -> Unit = { text, _, _, _ ->
|
||||||
code?.let { interactionListener?.onCodeChange(it.toString()) }
|
text?.let { interactionListener?.onTextChange(it.toString()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private val editorActionListener = object : TextView.OnEditorActionListener {
|
private val editorActionListener = object : TextView.OnEditorActionListener {
|
||||||
@ -63,6 +65,8 @@ abstract class SettingsEditTextItem : EpoxyModelWithHolder<SettingsEditTextItem.
|
|||||||
} else {
|
} else {
|
||||||
holder.textInputLayout.error = errorText
|
holder.textInputLayout.error = errorText
|
||||||
}
|
}
|
||||||
|
holder.textInputLayout.hint = hint
|
||||||
|
inputType?.let { holder.editText.inputType = it }
|
||||||
|
|
||||||
holder.editText.doOnTextChanged(textChangeListener)
|
holder.editText.doOnTextChanged(textChangeListener)
|
||||||
holder.editText.setOnEditorActionListener(editorActionListener)
|
holder.editText.setOnEditorActionListener(editorActionListener)
|
||||||
@ -76,6 +80,6 @@ abstract class SettingsEditTextItem : EpoxyModelWithHolder<SettingsEditTextItem.
|
|||||||
|
|
||||||
interface Listener {
|
interface Listener {
|
||||||
fun onValidate()
|
fun onValidate()
|
||||||
fun onCodeChange(code: String)
|
fun onTextChange(text: String)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,11 +31,12 @@ import im.vector.app.core.resources.ColorProvider
|
|||||||
import im.vector.app.core.resources.StringProvider
|
import im.vector.app.core.resources.StringProvider
|
||||||
import im.vector.app.core.ui.list.genericButtonItem
|
import im.vector.app.core.ui.list.genericButtonItem
|
||||||
import im.vector.app.core.ui.list.genericFooterItem
|
import im.vector.app.core.ui.list.genericFooterItem
|
||||||
|
import im.vector.app.features.discovery.SettingsEditTextItem
|
||||||
import im.vector.app.features.discovery.settingsContinueCancelItem
|
import im.vector.app.features.discovery.settingsContinueCancelItem
|
||||||
|
import im.vector.app.features.discovery.settingsEditTextItem
|
||||||
import im.vector.app.features.discovery.settingsInfoItem
|
import im.vector.app.features.discovery.settingsInfoItem
|
||||||
import im.vector.app.features.discovery.settingsInformationItem
|
import im.vector.app.features.discovery.settingsInformationItem
|
||||||
import im.vector.app.features.discovery.settingsSectionTitleItem
|
import im.vector.app.features.discovery.settingsSectionTitleItem
|
||||||
import im.vector.app.features.form.formEditTextItem
|
|
||||||
import org.matrix.android.sdk.api.session.identity.ThreePid
|
import org.matrix.android.sdk.api.session.identity.ThreePid
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@ -127,13 +128,20 @@ class ThreePidsSettingsController @Inject constructor(
|
|||||||
buttonClickAction(View.OnClickListener { interactionListener?.addEmail() })
|
buttonClickAction(View.OnClickListener { interactionListener?.addEmail() })
|
||||||
}
|
}
|
||||||
is ThreePidsSettingsState.AddingEmail -> {
|
is ThreePidsSettingsState.AddingEmail -> {
|
||||||
formEditTextItem {
|
settingsEditTextItem {
|
||||||
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))
|
||||||
errorMessage(data.state.error)
|
errorText(data.state.error)
|
||||||
onTextChange { currentInputValue = it }
|
interactionListener(object : SettingsEditTextItem.Listener {
|
||||||
showBottomSeparator(false)
|
override fun onValidate() {
|
||||||
|
interactionListener?.doAddEmail(currentInputValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onTextChange(text: String) {
|
||||||
|
currentInputValue = text
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
settingsContinueCancelItem {
|
settingsContinueCancelItem {
|
||||||
id("contAddingEmail")
|
id("contAddingEmail")
|
||||||
@ -180,13 +188,20 @@ class ThreePidsSettingsController @Inject constructor(
|
|||||||
id("addingMsisdnInfo")
|
id("addingMsisdnInfo")
|
||||||
helperText(stringProvider.getString(R.string.login_msisdn_notice))
|
helperText(stringProvider.getString(R.string.login_msisdn_notice))
|
||||||
}
|
}
|
||||||
formEditTextItem {
|
settingsEditTextItem {
|
||||||
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))
|
||||||
errorMessage(data.state.error)
|
errorText(data.state.error)
|
||||||
onTextChange { currentInputValue = it }
|
interactionListener(object : SettingsEditTextItem.Listener {
|
||||||
showBottomSeparator(false)
|
override fun onValidate() {
|
||||||
|
interactionListener?.doAddMsisdn(currentInputValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onTextChange(text: String) {
|
||||||
|
currentInputValue = text
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
settingsContinueCancelItem {
|
settingsContinueCancelItem {
|
||||||
id("contAddingMsisdn")
|
id("contAddingMsisdn")
|
||||||
@ -234,12 +249,19 @@ class ThreePidsSettingsController @Inject constructor(
|
|||||||
message(stringProvider.getString(R.string.settings_text_message_sent, threePid.getFormattedValue()))
|
message(stringProvider.getString(R.string.settings_text_message_sent, threePid.getFormattedValue()))
|
||||||
colorProvider(colorProvider)
|
colorProvider(colorProvider)
|
||||||
}
|
}
|
||||||
formEditTextItem {
|
settingsEditTextItem {
|
||||||
id("msisdnVerification${threePid.value}")
|
id("msisdnVerification${threePid.value}")
|
||||||
inputType(InputType.TYPE_CLASS_NUMBER)
|
inputType(InputType.TYPE_CLASS_NUMBER)
|
||||||
hint(stringProvider.getString(R.string.settings_text_message_sent_hint))
|
hint(stringProvider.getString(R.string.settings_text_message_sent_hint))
|
||||||
showBottomSeparator(false)
|
interactionListener(object : SettingsEditTextItem.Listener {
|
||||||
onTextChange { currentCodes[threePid] = it }
|
override fun onValidate() {
|
||||||
|
interactionListener?.submitCode(threePid, currentCodes[threePid] ?: "")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onTextChange(text: String) {
|
||||||
|
currentCodes[threePid] = text
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
settingsContinueCancelItem {
|
settingsContinueCancelItem {
|
||||||
id("cont" + idPrefix + threePid.value)
|
id("cont" + idPrefix + threePid.value)
|
||||||
|
@ -28,6 +28,7 @@ import im.vector.app.core.dialogs.withColoredButton
|
|||||||
import im.vector.app.core.extensions.cleanup
|
import im.vector.app.core.extensions.cleanup
|
||||||
import im.vector.app.core.extensions.configureWith
|
import im.vector.app.core.extensions.configureWith
|
||||||
import im.vector.app.core.extensions.exhaustive
|
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.hideKeyboard
|
||||||
import im.vector.app.core.extensions.isEmail
|
import im.vector.app.core.extensions.isEmail
|
||||||
import im.vector.app.core.extensions.isMsisdn
|
import im.vector.app.core.extensions.isMsisdn
|
||||||
@ -158,7 +159,7 @@ class ThreePidsSettingsFragment @Inject constructor(
|
|||||||
|
|
||||||
override fun deleteThreePid(threePid: ThreePid) {
|
override fun deleteThreePid(threePid: ThreePid) {
|
||||||
AlertDialog.Builder(requireActivity())
|
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) { _, _ ->
|
.setPositiveButton(R.string.remove) { _, _ ->
|
||||||
viewModel.handle(ThreePidsSettingsAction.DeleteThreePid(threePid))
|
viewModel.handle(ThreePidsSettingsAction.DeleteThreePid(threePid))
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user