Files
BirdsProject/app/src/main/java/com/juhabi/birds/mine/ModifyPsdActivity.kt
fengjignqi 3f42536710 扫一扫
2026-09-20 09:18:26 +08:00

131 lines
4.2 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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) {
}
}