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.google.recaptcha.sample.RecaptchaVisual
|
import com.google.recaptcha.sample.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 com.igo.user.ui.login.LoginActivity.Companion.BASE_URL
|
import com.igo.user.ui.login.LoginActivity.Companion.WEB_SITE_KEY
|
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<TextView>(R.id.areaCode) }
|
private val tv_get_code by lazy { find<TextView>(R.id.tv_get_code) }
|
private val tv_operator by lazy { find<TextView>(R.id.tv_operator) }
|
private val tv_action by lazy { find<TextView>(R.id.tv_action) }
|
private val et_phone by lazy { find<EditText>(R.id.et_phone) }
|
private val et_code by lazy { find<EditText>(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<AreaCodeActivity>(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 = recaptcha.runCaptcha().await()
|
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
|
}
|
}
|
}
|
|
}
|