88 lines
2.9 KiB
Kotlin
88 lines
2.9 KiB
Kotlin
package com.example.basurapp
|
|
|
|
import android.content.Intent
|
|
import android.os.Bundle
|
|
import android.util.Patterns
|
|
import android.view.View
|
|
import android.widget.Toast
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.core.view.ViewCompat
|
|
import androidx.core.view.WindowInsetsCompat
|
|
import com.example.basurapp.databinding.ActivityLoginBinding
|
|
import com.google.firebase.auth.FirebaseAuth
|
|
import com.google.firebase.firestore.FirebaseFirestore
|
|
|
|
class LoginActivity : AppCompatActivity() {
|
|
|
|
private lateinit var binding: ActivityLoginBinding
|
|
private val auth: FirebaseAuth by lazy { FirebaseAuth.getInstance() }
|
|
private val db: FirebaseFirestore by lazy { FirebaseFirestore.getInstance() }
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
binding = ActivityLoginBinding.inflate(layoutInflater)
|
|
setContentView(binding.root)
|
|
|
|
// Padding para system bars
|
|
ViewCompat.setOnApplyWindowInsetsListener(binding.main) { v, insets ->
|
|
val bars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
|
v.setPadding(bars.left, bars.top, bars.right, bars.bottom)
|
|
insets
|
|
}
|
|
|
|
// Si ya hay sesión activa, ir directo al Main
|
|
// if (auth.currentUser != null) {
|
|
// goToMain()
|
|
// return
|
|
// }
|
|
|
|
binding.tvCreateAccount.setOnClickListener {
|
|
startActivity(Intent(this, RegisterActivity::class.java))
|
|
}
|
|
|
|
binding.btnEnter.setOnClickListener {
|
|
attemptLogin()
|
|
}
|
|
}
|
|
|
|
private fun attemptLogin() {
|
|
val email = binding.etEmail.text?.toString()?.trim().orEmpty()
|
|
val password = binding.etPassword.text?.toString().orEmpty()
|
|
|
|
// Validaciones
|
|
if (email.isEmpty() || password.isEmpty()) {
|
|
toast(getString(R.string.error_empty_fields))
|
|
return
|
|
}
|
|
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
|
|
binding.tilEmail.error = getString(R.string.error_invalid_email)
|
|
return
|
|
}
|
|
binding.tilEmail.error = null
|
|
|
|
setLoading(true)
|
|
auth.signInWithEmailAndPassword(email, password)
|
|
.addOnCompleteListener { task ->
|
|
if (task.isSuccessful) {
|
|
goToMain()
|
|
} else {
|
|
setLoading(false)
|
|
toast(task.exception?.localizedMessage ?: "Error al iniciar sesión")
|
|
}
|
|
}
|
|
}
|
|
|
|
private fun goToMain() {
|
|
startActivity(Intent(this, MainActivity::class.java))
|
|
finish()
|
|
}
|
|
|
|
private fun setLoading(loading: Boolean) {
|
|
binding.progressBar.visibility = if (loading) View.VISIBLE else View.GONE
|
|
binding.btnEnter.isEnabled = !loading
|
|
}
|
|
|
|
private fun toast(msg: String) {
|
|
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()
|
|
}
|
|
} |