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