cloudroam
2025-02-28 1097c45d8d6aa4b74a50e8d9a99dedab73f2bbad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package com.example.firstapp.activity
 
import android.content.Intent
import android.os.Bundle
import android.os.CountDownTimer
import android.widget.Toast
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import com.example.firstapp.MainActivity
import com.example.firstapp.databinding.ActivityPhoneLoginBinding
import com.example.firstapp.ui.login.LoginViewModel
import com.example.firstapp.utils.Log
 
class PhoneLoginActivity : AppCompatActivity() {
    private lateinit var binding: ActivityPhoneLoginBinding
    private val viewModel: LoginViewModel by viewModels()
    private var countDownTimer: CountDownTimer? = null
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.d("PhoneLoginActivity", "onCreate called")
        binding = ActivityPhoneLoginBinding.inflate(layoutInflater)
        setContentView(binding.root)
 
        setupViews()
        observeViewModel()
    }
 
    private fun setupViews() {
        binding.apply {
            btnBack.setOnClickListener {
                startActivity(Intent(this@PhoneLoginActivity, LoginActivity::class.java))
                finish()
            }
 
            tvSendCode.setOnClickListener {
                val phone = etPhone.text.toString()
                if (phone.length == 11) {
                    viewModel.sendVerificationCode(phone)
                    startCountDown()
//                    17625318565 111111
                } else {
                    Toast.makeText(this@PhoneLoginActivity,
                        "请输入正确的手机号", Toast.LENGTH_SHORT).show()
                }
            }
 
            btnLogin.setOnClickListener {
                val phone = etPhone.text.toString()
                val code = etCode.text.toString()
                if (phone.length == 11 && code.length == 6) {
                    viewModel.login(phone, code)
                } else {
                    Toast.makeText(this@PhoneLoginActivity,
                        "请输入完整信息", Toast.LENGTH_SHORT).show()
                }
            }
        }
    }
 
    private fun observeViewModel() {
        viewModel.loginState.observe(this) { isLoggedIn ->
            if (isLoggedIn) {
                startActivity(Intent(this, MainActivity::class.java))
                finishAffinity() // 结束所有之前的Activity
            }
        }
    }
 
    private fun startCountDown() {
        binding.tvSendCode.isEnabled = false
        countDownTimer?.cancel()
        countDownTimer = object : CountDownTimer(60000, 1000) {
            override fun onTick(millisUntilFinished: Long) {
                binding.tvSendCode.text = "${millisUntilFinished / 1000}s"
            }
 
            override fun onFinish() {
                binding.tvSendCode.isEnabled = true
                binding.tvSendCode.text = "获取验证码"
            }
        }.start()
    }
 
    override fun onDestroy() {
        super.onDestroy()
        countDownTimer?.cancel()
    }
}