package com.igo.user.ui.login import MainActivityViewModel import android.os.CountDownTimer import android.widget.EditText import android.widget.TextView import androidx.activity.viewModels import androidx.core.os.bundleOf import androidx.lifecycle.lifecycleScope import cn.sinata.xldutils.utils.LengthFilter import cn.sinata.xldutils.utils.isValidPhone import cn.sinata.xldutils.utils.myToast import com.google.recaptcha.sample.RecaptchaVisual import com.google.recaptcha.sample.RecaptchaVisualException import com.igo.user.R import com.igo.user.dialog.ImageCodeDialog import com.igo.user.network.HttpManager import com.igo.user.network.request import com.igo.user.ui.TransparentStatusBarActivity import com.igo.user.ui.login.LoginActivity.Companion.BASE_URL import com.igo.user.ui.login.LoginActivity.Companion.WEB_SITE_KEY import com.igo.user.utils.DisableSpaceInputFilter import kotlinx.coroutines.launch import org.jetbrains.anko.find class ForgetActivity:TransparentStatusBarActivity() { override fun setContentView() = R.layout.activity_forget private val tv_code by lazy { find(R.id.tv_code) } private val tv_action by lazy { find(R.id.tv_action) } private val et_phone by lazy { find(R.id.et_phone) } private val et_code by lazy { find(R.id.et_code) } private val et_pwd by lazy { find(R.id.et_pwd) } private val viewModel: MainActivityViewModel by viewModels() private lateinit var recaptcha: RecaptchaVisual private val timer by lazy { object : CountDownTimer(60000, 1000) { override fun onFinish() { tv_code.text = getString(R.string.获取验证码) tv_code.isEnabled = true } override fun onTick(millisUntilFinished: Long) { tv_code.text = getString(R.string.sms_code_countdown,millisUntilFinished / 1000) } } } override fun initClick() { tv_code.setOnClickListener { val phone = et_phone.text.toString() if (!phone.isValidPhone()) { myToast(getString(R.string.请填写手机号)) return@setOnClickListener } lifecycleScope.launch { try { val token = recaptcha.runCaptcha().await() viewModel.onLoginButtonClicked(token) HttpManager.sendSms(phone, "", 4,token).request( this@ForgetActivity, success = { _, _ -> val start = timer.start() myToast(getString(R.string.发送成功)) }, error = { _, _ -> tv_code.isEnabled = true }) } catch (error: RecaptchaVisualException) { viewModel.onTokenError(error) } } /* val imageCodeDialog = ImageCodeDialog() imageCodeDialog.arguments = bundleOf("phone" to phone) imageCodeDialog.setCallback(object : ImageCodeDialog.Callback{ override fun onOk(code: String) { tv_code.isEnabled = false HttpManager.sendSms(phone,code,4).request(this@ForgetActivity,success = { _, _ -> timer.start() myToast(getString(R.string.发送成功)) },error = {_,_-> tv_code.isEnabled = true }) } }) imageCodeDialog.show(supportFragmentManager,"code")*/ } tv_action.setOnClickListener { val phone = et_phone.text.toString() if (!phone.isValidPhone()) { myToast(getString(R.string.请填写正确手机号)) return@setOnClickListener } val code = et_code.text.toString() if (code.isEmpty()) { myToast(getString(R.string.请输入验证码)) return@setOnClickListener } if (code.length<4) { myToast(getString(R.string.验证码输入有误)) return@setOnClickListener } val pwd = et_pwd.text.toString() if (pwd.length<6) { myToast(getString(R.string.请输入6到18位密码)) return@setOnClickListener } showDialog() HttpManager.forgetPassword(code,pwd,phone).request(this){_,_-> myToast(getString(R.string.密码已重置)) finish() } } } override fun initView() { title = getString(R.string.忘记密码) et_pwd.filters = arrayOf(DisableSpaceInputFilter(),LengthFilter(18)) recaptcha = RecaptchaVisual(supportFragmentManager, WEB_SITE_KEY, BASE_URL) } }