I am trying to make a register page. Before registering that user I will try to validate the username and email do not exist in the database. But I somehow cannot set the variable to be false when the username/email already exist so it will end up still registering the user.
How can I do this? Please guide me on this.
Checking if username and email already exist before register user:
if (!checkIfUsernameExists(userName) && !checkIfEmailExists(userEmail)){
registerUser();
}
Method for checking if the username exists or not:
public boolean checkIfUsernameExists(String userName){
boolean isExist = false;
databaseReferenceUser.orderByChild("userName").equalTo(userName).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
editTextUserNameRegister.setError("Username already exists");
editTextUserNameRegister.requestFocus();
final boolean isExist = true;
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return isExist;
}
Method for checking if the email already exists or not:
public boolean checkIfEmailExists(String userEmail){
boolean isExist = false;
databaseReferenceUser.orderByChild("userEmail").equalTo(userEmail).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
editTextEmailRegister.setError("Email already exists");
editTextEmailRegister.requestFocus();
final boolean isExist = true;
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return isExist;
}