Возвращает информацию о том, существует ли пользователь или нет, только если электронная почта уже зарегистрирована, если я использую другую электронную почту, процесс все еще продолжается, я думаю, что я не использую возвращаемое значение правильно.
Это остается, только если электронная почта зарегистрирована.Если бы я использовал другое письмо, это не остановило бы процесс.
private void checkUsername() {
final String Username = editTextUsername.getText().toString().trim();
//Check early for the username length
if (!TextUtils.isEmpty(Username)) {
DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").getRef();
final Query UsernameReference = mDatabaseReference.orderByChild("Username").equalTo(Username);
ValueEventListener UsernameValueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String usernameExist = dataSnapshot.getValue(String.class);
//If the username not null
if (usernameExist != null) {
//If username exist
if (usernameExist.equals(Username)) {
editTextUsername.setError("username taken");
editTextUsername.requestFocus();
} else {
//If not exist, proceed here, which mean success
//Change to your edit text
String email = null;
String password = null;
createAcc(email, password, Username);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
UsernameReference.addListenerForSingleValueEvent(UsernameValueEventListener);
} else {
editTextUsername.setError("Username too short");
editTextUsername.requestFocus();
}
final String email = (editTextEmail).getText().toString().trim();
final String password = editTextPassword.getText().toString().trim();
//validate email
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
editTextEmail.setError("please enter a valid email address");
return;
}
if (TextUtils.isEmpty(Username)) {
editTextUsername.setError("username required");
return;
}
if (!PASSWORD_PATTERN.matcher(password).matches()) {
editTextPassword.setError("password must contain an uppercase, a special character, and numbers");
return;
}
if (TextUtils.isEmpty(password)) {
editTextPassword.setError("password required");
return;
}
if (TextUtils.isEmpty(email)) {
editTextEmail.setError("email required");
return;
}
if (Username.length() < 5) {
editTextUsername.setError("Username too short");
}
}
private void createAcc(final String email, String password, final String Username) {
progressDialog.setMessage("Registering...");
progressDialog.show();
//creating a new user
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//checking if success
if (task.isSuccessful()) {
//Uid
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
User user = new User(
Username,
email);
FirebaseDatabase.getInstance().getReference("Users")
.child(uid).setValue(user);
finish();
startActivity(new Intent(SignUpActivity.this, AgeDetailsActivity.class));
} else {
//display some message here
editTextEmail.setError("Email already exists");
}
progressDialog.dismiss();
}
});
}
@Override
public void onClick(View view) {
if (view == buttonSignup) {
checkUsername();
}