diff --git a/app/src/main/java/simform/gitexcercise/android/LoginActivity.kt b/app/src/main/java/simform/gitexcercise/android/LoginActivity.kt
index 3033584..3426108 100644
--- a/app/src/main/java/simform/gitexcercise/android/LoginActivity.kt
+++ b/app/src/main/java/simform/gitexcercise/android/LoginActivity.kt
@@ -5,6 +5,8 @@ import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import simform.gitexcercise.android.databinding.ActivityLoginBinding
+import simform.gitexcercise.android.validation.Validator
+import simform.gitexcercise.android.validation.Validator.ValidCredentials
class LoginActivity : AppCompatActivity() {
@@ -19,15 +21,40 @@ class LoginActivity : AppCompatActivity() {
private fun setupOnClicks() = with(binding) {
btnLogin.setOnClickListener {
- Toast.makeText(
- this@LoginActivity,
- getString(R.string.msg_login_successfully),
- Toast.LENGTH_SHORT
- ).show()
- val intent = Intent(this@LoginActivity, ProfileActivity::class.java).apply {
- addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
+ performLogin()
+ }
+ tvForgotPassword.setOnClickListener {
+ startActivity(Intent(this@LoginActivity, ForgotPasswordActivity::class.java))
+ }
+ }
+
+ private fun performLogin() = with(binding) {
+ val txtEmail = etEmail.text.trim().toString()
+ val txtPassword = etPassword.text.trim().toString()
+ when (Validator.isValidCredentials(email = txtEmail, password = txtPassword)) {
+ ValidCredentials.VALID -> {
+ Toast.makeText(
+ this@LoginActivity,
+ getString(R.string.msg_login_successfully),
+ Toast.LENGTH_SHORT
+ ).show()
+ gotoProfile()
+ }
+
+ ValidCredentials.INVALID_EMAIL -> {
+ etEmail.error = getString(R.string.errr_valid_email)
}
- startActivity(intent)
+
+ ValidCredentials.INVALID_PASSWORD -> {
+ etPassword.error = getString(R.string.err_password_8_chars)
+ }
+ }
+ }
+
+ private fun gotoProfile() {
+ val intent = Intent(this@LoginActivity, ProfileActivity::class.java).apply {
+ addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
}
+ startActivity(intent)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/simform/gitexcercise/android/validation/Validator.kt b/app/src/main/java/simform/gitexcercise/android/validation/Validator.kt
new file mode 100644
index 0000000..53041e3
--- /dev/null
+++ b/app/src/main/java/simform/gitexcercise/android/validation/Validator.kt
@@ -0,0 +1,25 @@
+package simform.gitexcercise.android.validation
+
+object Validator {
+
+ object Password {
+ const val MIN_LENGTH = 8
+ const val MAX_LENGTH = 16
+ }
+
+ enum class ValidCredentials {
+ VALID, INVALID_EMAIL, INVALID_PASSWORD
+ }
+
+ fun isValidCredentials(email: String, password: String): ValidCredentials {
+ if (!isValidEmail(email)) return ValidCredentials.INVALID_EMAIL
+ if (!isValidPassword(password)) return ValidCredentials.INVALID_PASSWORD
+ return ValidCredentials.VALID
+ }
+
+ fun isValidEmail(email: String) =
+ android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()
+
+ fun isValidPassword(password: String): Boolean =
+ password.isNotBlank() && password.length in Password.MIN_LENGTH..Password.MAX_LENGTH
+}
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 29cb4e9..d57eb6d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -17,4 +17,6 @@
To be Implemented Soon!!
Edit
priyashu@simformsolutions.com
+ Password must be of at least 8 Characters
+ Enter valid Email
\ No newline at end of file