package com.igo.user.ui.mine import MainActivityViewModel import android.app.Activity import android.content.Intent 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.isValidPhone import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.utils.showAllowingStateLoss import com.igo.user.utils.recaptcha.RecaptchaVisualException import com.igo.user.IGoApplication.Companion.phone import com.igo.user.R import com.igo.user.dialog.SingleWheelDialog import com.igo.user.dialog.TipDialog import com.igo.user.interfaces.StringCallback import com.igo.user.network.HttpManager import com.igo.user.network.request import com.igo.user.ui.TransparentStatusBarActivity import com.igo.user.ui.login.AreaCodeActivity import kotlinx.coroutines.launch import org.jetbrains.anko.find import org.jetbrains.anko.sdk27.coroutines.onClick import org.jetbrains.anko.startActivityForResult class ModifyPhoneActivity:TransparentStatusBarActivity() { override fun setContentView() = R.layout.activity_modify_phone private val areaCode by lazy { find(R.id.areaCode) } private val tv_get_code by lazy { find(R.id.tv_get_code) } private val tv_operator by lazy { find(R.id.tv_operator) } 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 viewModel: MainActivityViewModel by viewModels() // private lateinit var recaptcha: RecaptchaVisual private val countDownTimer = object : CountDownTimer(60 * 1000, 1000) { override fun onFinish() { tv_get_code.text = getString(R.string.重新获取) tv_get_code.isEnabled = true } override fun onTick(millisUntilFinished: Long) { tv_get_code.text = getString(R.string.sms_code_countdown,millisUntilFinished / 1000) } } private val myPhone by lazy { intent.getStringExtra("myPhone") } override fun initClick() { areaCode.setOnClickListener { startActivityForResult(10086) } tv_operator.setOnClickListener { val singleWheelDialog = SingleWheelDialog() singleWheelDialog.arguments = bundleOf( "title" to getString(R.string.运营商), "data" to arrayListOf( "MTN", "TIGO", "TELECEL", "AIRTEL" ) ) singleWheelDialog.setCallback(object : StringCallback { override fun onRlt(rlt: String) { tv_operator.text = rlt } }) singleWheelDialog.showAllowingStateLoss(supportFragmentManager, "op") } tv_get_code.onClick { sendSms() } tv_action.onClick { /* val operator = tv_operator.text.toString() if (operator.isEmpty()){ myToast(getString(R.string.请选择运营商)) return@onClick }*/ var newPhone = et_phone.text.toString() if (!newPhone.isValidPhone()){ myToast(getString(R.string.请填写手机号)) return@onClick } newPhone = areaCode.text.toString().replace("+","") + newPhone if (newPhone == myPhone){ myToast(getString(R.string.新手机号与原手机号不能相同)) return@onClick } val s = et_code.text.toString() if (s.length != 4) { myToast(getString(R.string.验证码输入有误)) } else { HttpManager.updatePhone(s,newPhone,"").request(this@ModifyPhoneActivity){ _, data-> setResult(Activity.RESULT_OK) val tipDialog = TipDialog() tipDialog.arguments = bundleOf("msg" to getString(R.string.修改成功重新登录),"isAlert" to true) tipDialog.setDismissCallback(object :TipDialog.OnDismiss{ override fun onDismiss() { finish() } }) tipDialog.show(supportFragmentManager,"login") } } } } private fun sendSms() { var newPhone = et_phone.text.toString() if (!newPhone.isValidPhone()){ myToast(getString(R.string.请填写手机号)) return } newPhone = areaCode.text.toString().replace("+","") + newPhone if (newPhone == myPhone){ myToast(getString(R.string.新手机号与原手机号不能相同)) return } lifecycleScope.launch { try { val token = "" viewModel.onLoginButtonClicked(token) HttpManager.sendSms(phone, "", 1,token).request( this@ModifyPhoneActivity, success = { _, _ -> myToast(getString(R.string.发送成功)) countDownTimer.start() }, error = { _, _ -> tv_get_code.isEnabled = true }) } catch (error: RecaptchaVisualException) { viewModel.onTokenError(error) } } /* val imageCodeDialog = ImageCodeDialog() imageCodeDialog.arguments = bundleOf("phone" to text) imageCodeDialog.setCallback(object : ImageCodeDialog.Callback{ override fun onOk(code: String) { showDialog() tv_get_code.isEnabled = false HttpManager.sendSms(text,code,1).request(this@ModifyPhoneActivity,success = { msg, _ -> myToast(getString(R.string.发送成功)) countDownTimer.start() }){_,_-> tv_get_code.isEnabled = true } } }) imageCodeDialog.show(supportFragmentManager,"code")*/ } override fun initView() { title = getString(R.string.修改手机号) // recaptcha = RecaptchaVisual(supportFragmentManager, WEB_SITE_KEY, BASE_URL) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (resultCode == Activity.RESULT_OK && requestCode == 10086) { data?.getStringExtra("code")?.let { areaCode.text = it } } } }