131 lines
4.2 KiB
Kotlin
131 lines
4.2 KiB
Kotlin
package com.juhabi.birds.mine
|
||
|
||
import android.os.Bundle
|
||
import android.view.LayoutInflater
|
||
import android.view.View
|
||
import com.gyf.immersionbar.ImmersionBar
|
||
import com.juhabi.birds.R
|
||
import com.juhabi.birds.base.BaseActivity
|
||
import com.juhabi.birds.databinding.ActivityMineCenterBinding
|
||
import com.juhabi.birds.databinding.ModifyPsdLayoutBinding
|
||
import com.juhabi.birds.main.model.AppVersionInfo
|
||
import com.juhabi.birds.mine.model.MineUserInfo
|
||
import com.juhabi.birds.mine.mvp.MineContract
|
||
import com.juhabi.birds.mine.mvp.MineImpl
|
||
import com.juhabi.birds.mine.mvp.MinePresenter
|
||
import com.juhabi.birds.util.ToastUtil
|
||
|
||
/**
|
||
* 旧密码,修改新密码
|
||
*/
|
||
class ModifyPsdActivity : BaseActivity<ModifyPsdLayoutBinding, MinePresenter>(),
|
||
MineContract.MineView, View.OnClickListener {
|
||
override fun createBinding(inflater: LayoutInflater): ModifyPsdLayoutBinding {
|
||
return ModifyPsdLayoutBinding.inflate(inflater)
|
||
}
|
||
|
||
override fun createPresenter(): MinePresenter? {
|
||
return MinePresenter(MineImpl())
|
||
}
|
||
|
||
override fun initWindows() {
|
||
ImmersionBar.with(this)
|
||
.statusBarView(binding.statusBarView)
|
||
.statusBarDarkFont(true)
|
||
.navigationBarColor(R.color.color_zhu)
|
||
.navigationBarDarkIcon(true)
|
||
.init()
|
||
}
|
||
|
||
|
||
override fun initView(savedInstanceState: Bundle?) {
|
||
listOf(
|
||
binding.oldPsdVisibilityButton,
|
||
binding.passwordVisibilityButton,
|
||
binding.confirmPasswordVisibilityButton,
|
||
binding.confirmButton,
|
||
binding.includedTitle.imgBack,
|
||
).forEach { button ->
|
||
button.setOnClickListener(this)
|
||
}
|
||
}
|
||
|
||
override fun onClick(view: View) {
|
||
when(view.id){
|
||
R.id.img_back ->{
|
||
finish()
|
||
}
|
||
|
||
R.id.confirmButton ->{//确认修改
|
||
val oldPassword = binding.oldPasswordEditText.text.toString()
|
||
val newPassword = binding.passwordEditText.text.toString()
|
||
val confirmPassword = binding.confirmPasswordEditText.text.toString()
|
||
|
||
// 按顺序校验输入项,避免无效数据提交到服务端。
|
||
if (oldPassword.isBlank()) {
|
||
ToastUtil.showShort(mContext, "当前密码不能为空")
|
||
return
|
||
}
|
||
if (newPassword.isBlank()) {
|
||
ToastUtil.showShort(mContext, "新密码不能为空")
|
||
return
|
||
}
|
||
if (confirmPassword.isBlank()) {
|
||
ToastUtil.showShort(mContext, "请再次输入新密码")
|
||
return
|
||
}
|
||
if (oldPassword == newPassword) {
|
||
ToastUtil.showShort(mContext, "新密码不能与当前密码相同")
|
||
return
|
||
}
|
||
if (newPassword != confirmPassword) {
|
||
ToastUtil.showShort(mContext, "两次输入的新密码不一致")
|
||
return
|
||
}
|
||
if (!isValidPassword(newPassword)) {
|
||
ToastUtil.showShort(mContext, "密码需为8-20位,且包含大小写字母和数字")
|
||
return
|
||
}
|
||
|
||
presenter?.modifyPassword(oldPassword, newPassword)
|
||
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
|
||
|
||
override fun showError(message: String) {
|
||
hideLoading()
|
||
ToastUtil.showShort(mContext, message)
|
||
}
|
||
|
||
override fun onModifyPasswordSuccess(message: String) {
|
||
hideLoading()
|
||
ToastUtil.showShort(mContext, message.ifBlank { "密码修改成功" })
|
||
finish()
|
||
}
|
||
|
||
/** 8-20 位,且同时包含大写、小写字母和数字。 */
|
||
private fun isValidPassword(password: String): Boolean {
|
||
if (password.length !in PASSWORD_MIN_LENGTH..PASSWORD_MAX_LENGTH) return false
|
||
return password.any { it.isUpperCase() } &&
|
||
password.any { it.isLowerCase() } &&
|
||
password.any { it.isDigit() }
|
||
}
|
||
|
||
private companion object {
|
||
const val PASSWORD_MIN_LENGTH = 8
|
||
const val PASSWORD_MAX_LENGTH = 20
|
||
}
|
||
|
||
override fun getUserInfoSuccess(userInfo: MineUserInfo) {
|
||
}
|
||
|
||
override fun onVersionChecked(versionInfo: AppVersionInfo) {
|
||
}
|
||
|
||
|
||
}
|