From d948d93d9e976bdf9794d6122a96bc67abd97dec Mon Sep 17 00:00:00 2001 From: Jay Date: Sat, 21 Feb 2026 07:20:06 +0000 Subject: [PATCH 1/3] fix: resolve Invalid Email issue during login after OTP (Fixes #5) --- .../example/updateapp/views/activites/LoginActivity.java | 8 ++++---- .../example/updateapp/views/activites/SignUpActivity.java | 8 ++++---- app/src/main/res/layout/activity_login.xml | 2 +- app/src/main/res/layout/activity_sign_up.xml | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java b/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java index 8700ad9..b47d197 100644 --- a/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java +++ b/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java @@ -73,8 +73,8 @@ protected void onCreate(Bundle savedInstanceState) { @Override public void onClick(View view) { - String email = binding.edtEmail.getText().toString(); - String password = binding.edtPassword.getText().toString(); + String email = binding.edtEmail.getText().toString().trim().toLowerCase(); + String password = binding.edtPassword.getText().toString().trim(); if (email.isEmpty()) { binding.edtEmail.setError(getString(R.string.enter_valid_email)); @@ -107,8 +107,8 @@ public void onComplete(@NonNull Task task) { @Override public void onClick(View v) { - String email = binding.edtEmail.getText().toString(); - String password = binding.edtPassword.getText().toString(); + String email = binding.edtEmail.getText().toString().trim().toLowerCase(); + String password = binding.edtPassword.getText().toString().trim(); if (email.isEmpty()) { binding.edtEmail.setError(getString(R.string.enter_valid_email)); diff --git a/app/src/main/java/com/example/updateapp/views/activites/SignUpActivity.java b/app/src/main/java/com/example/updateapp/views/activites/SignUpActivity.java index 7829cf7..e3a221b 100644 --- a/app/src/main/java/com/example/updateapp/views/activites/SignUpActivity.java +++ b/app/src/main/java/com/example/updateapp/views/activites/SignUpActivity.java @@ -69,10 +69,10 @@ protected void onCreate(Bundle savedInstanceState) { private void doValidation() { - String name = binding.edtName.getText().toString(); - String email = binding.edtEmail.getText().toString(); - String number = binding.edtMobile.getText().toString(); - String password = binding.edtPassword.getText().toString(); + String name = binding.edtName.getText().toString().trim(); + String email = binding.edtEmail.getText().toString().trim().toLowerCase(); + String number = binding.edtMobile.getText().toString().trim(); + String password = binding.edtPassword.getText().toString().trim(); if (name.isEmpty()) { binding.edtName.setError(getString(R.string.enter_good_name)); return; } if (email.isEmpty()) { binding.edtEmail.setError(getString(R.string.enter_valid_email)); return; } diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index ee8dac1..1aa0155 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -73,7 +73,7 @@ android:textSize="16sp" android:textColor="#A2A4b5" android:ems="10" - android:inputType="textPersonName" + android:inputType="textEmailAddress" android:background="@drawable/background_edit" /> Date: Sat, 21 Feb 2026 07:52:33 +0000 Subject: [PATCH 2/3] Apply CodeRabbit review suggestions --- _hunter_prompt.txt | 58 ++++++++++++ .../views/activites/LoginActivity.java | 93 ++++++------------- .../views/activites/SignUpActivity.java | 5 +- 3 files changed, 90 insertions(+), 66 deletions(-) create mode 100644 _hunter_prompt.txt diff --git a/_hunter_prompt.txt b/_hunter_prompt.txt new file mode 100644 index 0000000..54a01e8 --- /dev/null +++ b/_hunter_prompt.txt @@ -0,0 +1,58 @@ +You are an elite open-source bounty hunter and senior software engineer. +Your task is to fix GitHub Issue #5 in the repository allknowledge34/UpdateApp. + +Issue Title: $0.4 Bounty : Login fails with "Invalid Email" after successful signup and OTP verification +Issue Body: +--- +### Description +After completing the signup process successfully, login does not work with the same email and password. +The app shows an **"Invalid Email"** error during login. + +### Signup Flow +1. User signs up using: + - Name + - Email + - Phone number + - Password +2. After signup, the app redirects to **phone number OTP verification** +3. OTP is entered correctly and verified +4. Account is created successfully + +### Issue +After logging out, when trying to log in using the **same email and password** used during signup, +the login fails and shows **"Invalid Email"** error. + +### Steps to Reproduce +1. Open the app +2. Go to Signup screen +3. Enter name, email, phone number, and password +4. Verify phone number using OTP +5. Logout after successful signup +6. Go to Login screen +7. Enter the same email and password +8. Login fails with "Invalid Email" error + +### Expected Behavior +User should be able to log in successfully using the same email and password after signup. + +### Actual Behavior +Login fails with "Invalid Email" error even though the account was created successfully. + +### Platform +- Java (Android) +- Email & Phone OTP Authentication + +### Additional Information +- OTP verification works correctly +- Signup flow completes without any error +- Issue happens only during login after signup + +--- + +Instructions: +1. You are currently in the repository directory. +2. Read the codebase to understand the context of the bug. +3. Modify the code to fix the bug. +4. Ensure the tests pass. +5. Once you are 100% confident the fix is correct, run "git diff" to review your changes, but DO NOT commit or push yet. Just leave the code modified in the workspace. +6. Reply with a summary of what you fixed and the root cause. diff --git a/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java b/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java index b47d197..79d2efd 100644 --- a/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java +++ b/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java @@ -30,6 +30,7 @@ import com.google.firebase.firestore.FirebaseFirestore; import java.util.HashMap; +import java.util.Locale; import java.util.Map; public class LoginActivity extends AppCompatActivity { @@ -69,72 +70,10 @@ protected void onCreate(Bundle savedInstanceState) { progressDialog.setTitle(getString(R.string.logging_in)); progressDialog.setMessage(getString(R.string.please_wait)); - binding.emailBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - - String email = binding.edtEmail.getText().toString().trim().toLowerCase(); - String password = binding.edtPassword.getText().toString().trim(); - - if (email.isEmpty()) { - binding.edtEmail.setError(getString(R.string.enter_valid_email)); - } else if (password.isEmpty()) { - binding.edtPassword.setError(getString(R.string.enter_strong_password)); - } else { - - progressDialog.show(); - auth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - - if (task.isSuccessful()) { - progressDialog.dismiss(); - Intent intent = new Intent(LoginActivity.this, MainActivity.class); - startActivity(intent); - finish(); - } else { - progressDialog.dismiss(); - Toast.makeText(LoginActivity.this, task.getException().getLocalizedMessage(), Toast.LENGTH_SHORT).show(); - } - } - }); - } - } - }); - + binding.emailBtn.setOnClickListener(v -> performEmailLogin()); - binding.btnLogin.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - String email = binding.edtEmail.getText().toString().trim().toLowerCase(); - String password = binding.edtPassword.getText().toString().trim(); - - if (email.isEmpty()) { - binding.edtEmail.setError(getString(R.string.enter_valid_email)); - } else if (password.isEmpty()) { - binding.edtPassword.setError(getString(R.string.enter_strong_password)); - } else { - - progressDialog.show(); - auth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - - if (task.isSuccessful()) { - progressDialog.dismiss(); - Intent intent = new Intent(LoginActivity.this, MainActivity.class); - startActivity(intent); - finish(); - } else { - progressDialog.dismiss(); - Toast.makeText(LoginActivity.this, task.getException().getLocalizedMessage(), Toast.LENGTH_SHORT).show(); - } - } - }); - } - } - }); + binding.btnLogin.setOnClickListener(v -> performEmailLogin()); binding.forgotPassword.setOnClickListener(new View.OnClickListener() { @Override @@ -160,6 +99,32 @@ public void onClick(View v) { googleBtn.setOnClickListener(v -> signInWithGoogle()); } + private void performEmailLogin() { + String email = binding.edtEmail.getText().toString().trim().toLowerCase(Locale.ROOT); + String password = binding.edtPassword.getText().toString(); + + if (email.isEmpty()) { + binding.edtEmail.setError(getString(R.string.enter_valid_email)); + } else if (password.isEmpty()) { + binding.edtPassword.setError(getString(R.string.enter_strong_password)); + } else { + progressDialog.show(); + auth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + progressDialog.dismiss(); + if (task.isSuccessful()) { + Intent intent = new Intent(LoginActivity.this, MainActivity.class); + startActivity(intent); + finish(); + } else { + Toast.makeText(LoginActivity.this, task.getException().getLocalizedMessage(), Toast.LENGTH_SHORT).show(); + } + } + }); + } + } + void signInWithGoogle() { Intent intent = gsc.getSignInIntent(); startActivityForResult(intent, 1000); diff --git a/app/src/main/java/com/example/updateapp/views/activites/SignUpActivity.java b/app/src/main/java/com/example/updateapp/views/activites/SignUpActivity.java index e3a221b..890fa35 100644 --- a/app/src/main/java/com/example/updateapp/views/activites/SignUpActivity.java +++ b/app/src/main/java/com/example/updateapp/views/activites/SignUpActivity.java @@ -20,6 +20,7 @@ import com.google.firebase.auth.PhoneAuthOptions; import com.google.firebase.auth.PhoneAuthProvider; +import java.util.Locale; import java.util.concurrent.TimeUnit; public class SignUpActivity extends AppCompatActivity { @@ -70,9 +71,9 @@ protected void onCreate(Bundle savedInstanceState) { private void doValidation() { String name = binding.edtName.getText().toString().trim(); - String email = binding.edtEmail.getText().toString().trim().toLowerCase(); + String email = binding.edtEmail.getText().toString().trim().toLowerCase(Locale.ROOT); String number = binding.edtMobile.getText().toString().trim(); - String password = binding.edtPassword.getText().toString().trim(); + String password = binding.edtPassword.getText().toString(); if (name.isEmpty()) { binding.edtName.setError(getString(R.string.enter_good_name)); return; } if (email.isEmpty()) { binding.edtEmail.setError(getString(R.string.enter_valid_email)); return; } From 4e1908af1a064c9bb4d16dc7995cfbd2d802c187 Mon Sep 17 00:00:00 2001 From: Jay Date: Sat, 21 Feb 2026 09:03:06 +0000 Subject: [PATCH 3/3] Address review comments: null-guard getException, remove _hunter_prompt.txt --- .gitignore | 3 + _hunter_prompt.txt | 58 ------------------- .../views/activites/LoginActivity.java | 4 +- 3 files changed, 6 insertions(+), 59 deletions(-) delete mode 100644 _hunter_prompt.txt diff --git a/.gitignore b/.gitignore index aa724b7..ab86181 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ .externalNativeBuild .cxx local.properties + +# AI prompt artifacts +_hunter_prompt.txt diff --git a/_hunter_prompt.txt b/_hunter_prompt.txt deleted file mode 100644 index 54a01e8..0000000 --- a/_hunter_prompt.txt +++ /dev/null @@ -1,58 +0,0 @@ -You are an elite open-source bounty hunter and senior software engineer. -Your task is to fix GitHub Issue #5 in the repository allknowledge34/UpdateApp. - -Issue Title: $0.4 Bounty : Login fails with "Invalid Email" after successful signup and OTP verification -Issue Body: ---- -### Description -After completing the signup process successfully, login does not work with the same email and password. -The app shows an **"Invalid Email"** error during login. - -### Signup Flow -1. User signs up using: - - Name - - Email - - Phone number - - Password -2. After signup, the app redirects to **phone number OTP verification** -3. OTP is entered correctly and verified -4. Account is created successfully - -### Issue -After logging out, when trying to log in using the **same email and password** used during signup, -the login fails and shows **"Invalid Email"** error. - -### Steps to Reproduce -1. Open the app -2. Go to Signup screen -3. Enter name, email, phone number, and password -4. Verify phone number using OTP -5. Logout after successful signup -6. Go to Login screen -7. Enter the same email and password -8. Login fails with "Invalid Email" error - -### Expected Behavior -User should be able to log in successfully using the same email and password after signup. - -### Actual Behavior -Login fails with "Invalid Email" error even though the account was created successfully. - -### Platform -- Java (Android) -- Email & Phone OTP Authentication - -### Additional Information -- OTP verification works correctly -- Signup flow completes without any error -- Issue happens only during login after signup - ---- - -Instructions: -1. You are currently in the repository directory. -2. Read the codebase to understand the context of the bug. -3. Modify the code to fix the bug. -4. Ensure the tests pass. -5. Once you are 100% confident the fix is correct, run "git diff" to review your changes, but DO NOT commit or push yet. Just leave the code modified in the workspace. -6. Reply with a summary of what you fixed and the root cause. diff --git a/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java b/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java index 79d2efd..e475280 100644 --- a/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java +++ b/app/src/main/java/com/example/updateapp/views/activites/LoginActivity.java @@ -118,7 +118,9 @@ public void onComplete(@NonNull Task task) { startActivity(intent); finish(); } else { - Toast.makeText(LoginActivity.this, task.getException().getLocalizedMessage(), Toast.LENGTH_SHORT).show(); + Exception e = task.getException(); + String msg = (e != null) ? e.getLocalizedMessage() : getString(R.string.enter_valid_email); + Toast.makeText(LoginActivity.this, msg, Toast.LENGTH_SHORT).show(); } } });