App con inicio y base de datos pero sin direccion
This commit is contained in:
88
app/src/main/java/com/example/basurapp/LoginActivity.kt
Normal file
88
app/src/main/java/com/example/basurapp/LoginActivity.kt
Normal file
@@ -0,0 +1,88 @@
|
||||
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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user