Skip to content

Commit c236d92

Browse files
UNT-T21169 - Day4 - Bugfix/Login - ForgotPassword Issue
Fix Forgot Password Click not working Fix Login Screen Password Check Add Validator.kt to perform Validations
1 parent 7469113 commit c236d92

File tree

3 files changed

+62
-8
lines changed

3 files changed

+62
-8
lines changed

app/src/main/java/simform/gitexcercise/android/LoginActivity.kt

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import android.os.Bundle
55
import android.widget.Toast
66
import androidx.appcompat.app.AppCompatActivity
77
import simform.gitexcercise.android.databinding.ActivityLoginBinding
8+
import simform.gitexcercise.android.validation.Validator
9+
import simform.gitexcercise.android.validation.Validator.ValidCredentials
810

911
class LoginActivity : AppCompatActivity() {
1012

@@ -19,15 +21,40 @@ class LoginActivity : AppCompatActivity() {
1921

2022
private fun setupOnClicks() = with(binding) {
2123
btnLogin.setOnClickListener {
22-
Toast.makeText(
23-
this@LoginActivity,
24-
getString(R.string.msg_login_successfully),
25-
Toast.LENGTH_SHORT
26-
).show()
27-
val intent = Intent(this@LoginActivity, ProfileActivity::class.java).apply {
28-
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
24+
performLogin()
25+
}
26+
tvForgotPassword.setOnClickListener {
27+
startActivity(Intent(this@LoginActivity, ForgotPasswordActivity::class.java))
28+
}
29+
}
30+
31+
private fun performLogin() = with(binding) {
32+
val txtEmail = etEmail.text.trim().toString()
33+
val txtPassword = etPassword.text.trim().toString()
34+
when (Validator.isValidCredentials(email = txtEmail, password = txtPassword)) {
35+
ValidCredentials.VALID -> {
36+
Toast.makeText(
37+
this@LoginActivity,
38+
getString(R.string.msg_login_successfully),
39+
Toast.LENGTH_SHORT
40+
).show()
41+
gotoProfile()
42+
}
43+
44+
ValidCredentials.INVALID_EMAIL -> {
45+
etEmail.error = getString(R.string.errr_valid_email)
2946
}
30-
startActivity(intent)
47+
48+
ValidCredentials.INVALID_PASSWORD -> {
49+
etPassword.error = getString(R.string.err_password_8_chars)
50+
}
51+
}
52+
}
53+
54+
private fun gotoProfile() {
55+
val intent = Intent(this@LoginActivity, ProfileActivity::class.java).apply {
56+
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
3157
}
58+
startActivity(intent)
3259
}
3360
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package simform.gitexcercise.android.validation
2+
3+
object Validator {
4+
5+
object Password {
6+
const val MIN_LENGTH = 8
7+
const val MAX_LENGTH = 16
8+
}
9+
10+
enum class ValidCredentials {
11+
VALID, INVALID_EMAIL, INVALID_PASSWORD
12+
}
13+
14+
fun isValidCredentials(email: String, password: String): ValidCredentials {
15+
if (!isValidEmail(email)) return ValidCredentials.INVALID_EMAIL
16+
if (!isValidPassword(password)) return ValidCredentials.INVALID_PASSWORD
17+
return ValidCredentials.VALID
18+
}
19+
20+
fun isValidEmail(email: String) =
21+
android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()
22+
23+
fun isValidPassword(password: String): Boolean =
24+
password.isNotBlank() && password.length in Password.MIN_LENGTH..Password.MAX_LENGTH
25+
}

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@
1717
<string name="msg_upcoming_feature">To be Implemented Soon!!</string>
1818
<string name="action_edit">Edit</string>
1919
<string name="data_priyashu_email">[email protected]</string>
20+
<string name="err_password_8_chars">Password must be of at least 8 Characters</string>
21+
<string name="errr_valid_email">Enter valid Email</string>
2022
</resources>

0 commit comments

Comments
 (0)