扫一扫

This commit is contained in:
fengjignqi
2026-09-20 09:18:26 +08:00
parent 981cfae71c
commit 3f42536710
25 changed files with 1258 additions and 96 deletions

View File

@@ -0,0 +1,130 @@
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) {
}
}