Commit 5f0dc74f authored by yinjiacheng's avatar yinjiacheng

fix SHQBD-123 生活号名称限制长度24个字符

parent 10f59bbd
......@@ -87,4 +87,7 @@ object Constant {
const val MERCHANT_SERVICE_GROUP_PUBLISH = 1 // 我要发布
const val MERCHANT_SERVICE_GROUP_MANAGEMENT = 2 // 管理服务
const val MERCHANT_SERVICE_GROUP_OTHER = 3 // 其他服务
// 各输入场景最大长度显示
const val MAX_LENGTH_LIFE_ACCOUNT_NAME = 24 // 生活号名称
}
......@@ -3,7 +3,7 @@ package com.yidian.shenghuoquan.newscontent.ui.auth
import android.annotation.SuppressLint
import android.os.Bundle
import android.text.Editable
import android.text.InputFilter
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import com.orhanobut.hawk.Hawk
import com.yidian.common.HawkConfig
......@@ -12,6 +12,7 @@ import com.yidian.common.XRouterPathConstants.Companion.LIFE_ACCOUNT_CREATE
import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.bean.ICreateLifeAccountCallback
import com.yidian.shenghuoquan.newscontent.constant.Constant
import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountCreateBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.utils.InputFilterUtil
......@@ -21,7 +22,7 @@ import com.yidian.utils.ToastUtil
import com.yidian.xpage.XPageManager
class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding>(),
ICreateLifeAccountCallback {
ICreateLifeAccountCallback, InputFilterUtil.OnLengthFilterCallback {
companion object {
private const val TAG = "LifeAccountCreate"
const val LIFE_ACCOUNT_ID = "life_account_id"
......@@ -36,10 +37,6 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding>
return LIFE_ACCOUNT_CREATE
}
/**
* 生活号名称长度限制
*/
private val lifeAccountNameMaxLength = 40
private var lifeAccountId: String? = null
private var lifeAccountName: String? = null
......@@ -74,7 +71,7 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding>
}
})
// 设置输入过滤规则
viewBind.etAccount.filters = arrayOf(InputFilterUtil.getLifeAccountNameFilter(), InputFilter.LengthFilter(lifeAccountNameMaxLength + 1))
viewBind.etAccount.filters = arrayOf(InputFilterUtil.getLengthFilter(Constant.MAX_LENGTH_LIFE_ACCOUNT_NAME, this))
viewBind.btnCreateAccount.setOnClickListener {
createLifeAccount()
}
......@@ -110,14 +107,6 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding>
viewBind.btnCreateAccount.isEnabled = false
viewBind.tvErrorTips.isVisible = false
viewBind.vDivider.setBackgroundResource(R.color.divider_white)
return
}
if (s.length > lifeAccountNameMaxLength) {
viewBind.btnCreateAccount.alpha = 0.32f
viewBind.btnCreateAccount.isEnabled = false
viewBind.tvErrorTips.isVisible = true
viewBind.etAccount.setTextColor(resources.getColor(R.color.red_account_tips))
viewBind.vDivider.setBackgroundResource(R.color.red_account_tips)
} else {
viewBind.btnCreateAccount.alpha = 1f
viewBind.btnCreateAccount.isEnabled = true
......@@ -142,4 +131,11 @@ class LifeAccountCreateActivity : BaseActivity<ActivityLifeAccountCreateBinding>
}
}
override fun onLengthOverrun(maxLength: Int) {
// 输入长度超限 展示错误提示
viewBind.tvErrorTips.isVisible = true
viewBind.etAccount.setTextColor(ContextCompat.getColor(this, R.color.red_account_tips))
viewBind.vDivider.setBackgroundResource(R.color.red_account_tips)
}
}
package com.yidian.shenghuoquan.newscontent.ui.center
import android.os.Bundle
import android.text.InputFilter
import com.yidian.common.XEventConfig
import com.yidian.common.XRouterPathConstants
import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.bean.ICreateLifeAccountCallback
import com.yidian.shenghuoquan.newscontent.constant.Constant
import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountModifyNameBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.utils.InputFilterUtil
......@@ -24,7 +24,7 @@ import com.yidian.xpage.XPageManager
class LifeAccountModifyNameActivity : BaseActivity<ActivityLifeAccountModifyNameBinding>(),
CommonTopBarView.OnCommonTopBarActionCallback,
LifeAccountAuthIdentityInfoEditView.OnLifeAccountAuthIdentityInfoEditViewCallback,
ICreateLifeAccountCallback {
ICreateLifeAccountCallback, InputFilterUtil.OnLengthFilterCallback {
companion object {
const val EXTRA_LIFE_ACCOUNT_ID = "life_account_id"
......@@ -50,8 +50,8 @@ class LifeAccountModifyNameActivity : BaseActivity<ActivityLifeAccountModifyName
}
private fun initView() {
// 只允许输入中文并且最长20汉字
viewBind.evLifeAccountName.setInputFilters(InputFilterUtil.getLifeAccountNameFilter(), InputFilter.LengthFilter(40))
// 生活号名称长度限制24个字符
viewBind.evLifeAccountName.setInputFilters(InputFilterUtil.getLengthFilter(Constant.MAX_LENGTH_LIFE_ACCOUNT_NAME, this))
}
private fun initListener() {
......@@ -100,4 +100,9 @@ class LifeAccountModifyNameActivity : BaseActivity<ActivityLifeAccountModifyName
viewBind.evLifeAccountName.showErrorTips(resources.getString(R.string.life_account_name_already_exist))
}
}
override fun onLengthOverrun(maxLength: Int) {
// 输入长度超限 展示错误提示
viewBind.evLifeAccountName.showErrorTips(resources.getString(R.string.life_account_name_overrun_error_tips))
}
}
......@@ -9,8 +9,9 @@ import java.util.regex.Pattern
* date: 6/15/21 1:59 AM
* description: 输入过滤
*/
object InputFilterUtil {
class InputFilterUtil {
companion object {
/**
* 真实姓名过滤
* 汉字 + ·
......@@ -77,14 +78,24 @@ object InputFilterUtil {
}
/**
* 生活号名称过滤
* 带回调的输入长度过滤
*/
fun getLifeAccountNameFilter(): InputFilter {
return InputFilter { source, _, _, _, _, _ ->
val pattern = Pattern.compile("[\\u4E00-\\u9FFF]+")
val matcher = pattern.matcher(source.toString())
if (!matcher.matches()) return@InputFilter ""
fun getLengthFilter(maxLength: Int, callback: OnLengthFilterCallback?): InputFilter {
return InputFilter { source, start, end, dest, dstart, dend ->
if (dstart + end >= maxLength + 1) {
callback?.onLengthOverrun(maxLength)
return@InputFilter ""
}
return@InputFilter null
}
}
}
interface OnLengthFilterCallback {
/**
* 长度超限
* @param maxLength 最大长度
*/
fun onLengthOverrun(maxLength: Int)
}
}
......@@ -82,7 +82,7 @@
android:layout_marginStart="20dp"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:text="@string/account_error_tips"
android:text="@string/life_account_name_overrun_error_tips"
android:textColor="@color/red_account_tips"
android:textSize="12sp"
android:visibility="gone"
......
......@@ -51,7 +51,7 @@
<string name="create_account">确认创建</string>
<string name="account_create_tips">同企业下生活号名称不可复用</string>
<string name="account_create_desc">生活号作为企业服务管理载体,请正确使用生活号权益,新申请生活号默认当前申请人作为默认管理员,申请成功 后可在销售APP内进行更改</string>
<string name="account_error_tips">名称超限,最多40个字符</string>
<string name="life_account_name_overrun_error_tips">名称超限,最多24个字符</string>
<string name="account_manager">管理员</string>
<string name="account_name">生活号名称</string>
<string name="account_title">创建生活号</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment