Я использую Firebase для аутентификации, и в процессе регистрации у меня есть кое-что, чтобы проверить, было ли имя пользователя уже взято из базы данных, которая имеет такую структуру:
Users
|
|
|
----userID
|-----"username"="exampleusername"
Мой код распознает, если имя пользователя уже занят и возвращает сообщение Toast и не создает пользователя, проблема в том, что если имя пользователя не занято, оно также отображает это сообщение, но учетная запись создана. Кто-нибудь знает, что я здесь не так делаю?
public class SignUpActivity extends AppCompatActivity {
private EditText emailTV, passwordTV, usernameTV, fullnameTV;
private ImageButton regBtn;
private ProgressBar progressBar;
private FirebaseAuth mAuth;
private static FirebaseAnalytics firebaseAnalytics;
DatabaseReference reference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up);
mAuth = FirebaseAuth.getInstance();
initializeUI();
regBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
usernamecheck();
}
});
final TextView signup_button = findViewById(R.id.back_button);
signup_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(SignUpActivity.this, LoginActivity.class);
startActivity(intent);
}
});
}
private void usernamecheck() {
String username;
username = usernameTV.getText().toString();
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Users");
ref.orderByChild("username").equalTo(username).addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
if(!dataSnapshot.exists()) {
registerNewUser();
return;
}
else{
userexists();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void userexists(){
Toast.makeText(getApplicationContext(), getString(R.string.usernameexists), Toast.LENGTH_LONG).show();
}
private void registerNewUser() {
progressBar.setVisibility(View.VISIBLE);
String email, password, username, fullname;
fullname = fullnameTV.getText().toString();
email = emailTV.getText().toString();
password = passwordTV.getText().toString();
username = usernameTV.getText().toString();
if (TextUtils.isEmpty(fullname)) {
Toast.makeText(getApplicationContext(), getString(R.string.missingfullname), Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
return;
}
if (TextUtils.isEmpty(username)) {
Toast.makeText(getApplicationContext(), getString(R.string.missingusername), Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
return;
}
if (TextUtils.isEmpty(email)) {
Toast.makeText(getApplicationContext(), getString(R.string.missingmail), Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
return;
}
if (TextUtils.isEmpty(password)) {
Toast.makeText(getApplicationContext(), getString(R.string.missingpassword), Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
return;
}
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userid = user.getUid();
reference = FirebaseDatabase.getInstance().getReference().child("Users").child(userid);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("id", userid);
hashMap.put("username", username.toLowerCase());
hashMap.put("fullname", fullname);
hashMap.put("bio", "");
hashMap.put("imageurl", "https://firebasestorage.googleapis.com/v0/b/frooze-b2248.appspot.com/o/default.png?alt=media&token=aaf52a37-7043-4685-b91f-c6cccda88f4e");
reference.setValue(hashMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
// Verification Mail
sendVerificationEmail();
FirebaseAuth.getInstance().signOut();
progressBar.setVisibility(View.GONE);
Intent intent = new Intent(SignUpActivity.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
});
}
else {
// If registration fails
Toast.makeText(getApplicationContext(), getString(R.string.registrationfail), Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
}
}
});
}
public void sendVerificationEmail() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
// if User logged in
if (user != null) {
// Sends verify Mail
user.sendEmailVerification()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(), getString(R.string.registrationsuccessful), Toast.LENGTH_LONG).show();
}
}
});
}
}
private void initializeUI() {
fullnameTV = findViewById(R.id.fullname);
emailTV = findViewById(R.id.email);
usernameTV = findViewById(R.id.username);
passwordTV = findViewById(R.id.password);
regBtn = findViewById(R.id.register);
progressBar = findViewById(R.id.progressBar);
}
}
Спасибо.