package com.igo.user.ui.login 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.SPUtils import cn.sinata.xldutils.utils.isValidPhone import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.utils.optInt import cn.sinata.xldutils.utils.optString import cn.sinata.xldutils.utils.showAllowingStateLoss import com.igo.user.utils.recaptcha.RecaptchaVisualException import com.igo.user.R import com.igo.user.dialog.SingleWheelDialog 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.utils.Const import kotlinx.coroutines.launch import org.jetbrains.anko.find import org.jetbrains.anko.startActivityForResult class BindPhoneActivity : TransparentStatusBarActivity() { override fun setContentView() = R.layout.activity_bind_phone private val areaCode by lazy { find(R.id.areaCode) } private val tv_code by lazy { find(R.id.tv_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 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() { 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_code.setOnClickListener { // val operator = tv_operator.text.toString() // if (operator.isEmpty()){ // myToast(getString(R.string.请选择运营商)) // return@setOnClickListener // } var phone = et_phone.text.toString() if (!phone.isValidPhone()) { myToast(getString(R.string.请输入正确的手机号码)) return@setOnClickListener } phone = areaCode.text.toString().replace("+","") + phone lifecycleScope.launch { try { val token = "" viewModel.onLoginButtonClicked(token) HttpManager.sendSms(phone, "", 1,token).request( this@BindPhoneActivity, 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,1).request(this@BindPhoneActivity,success = { _, _ -> timer.start() myToast(getString(R.string.发送成功)) },error = {_,_-> tv_code.isEnabled = true }) } }) imageCodeDialog.show(supportFragmentManager,"code")*/ } tv_action.setOnClickListener { val operator = tv_operator.text.toString() if (operator.isEmpty()){ myToast(getString(R.string.请选择运营商)) return@setOnClickListener } var phone = et_phone.text.toString() if (!phone.isValidPhone()) { myToast(getString(R.string.请输入正确的手机号码)) return@setOnClickListener } phone = areaCode.text.toString().replace("+","") + phone 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 } HttpManager.bindingPhone(operator,code, phone).request(this){_,data-> data?.let { myToast(getString(R.string.bind_success)) SPUtils.instance().put(Const.User.NO_PHONE, false).apply() if (it.optString("appid").isNotEmpty()){ SPUtils.instance().put(Const.User.APP_ID, it.optString("appid")) .put(Const.User.TOKEN, it.optString("token")) .put(Const.User.USER_ID, it.optInt("id")).apply() } setResult(Activity.RESULT_OK) finish() } } } } 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 } } } }