Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- usernameTaken:
- [ID generated by push()]:
- Username: username
- users:
- UidFromRegistration:
- Email: emailFromRegistration
- Username: username
- private void checkUser() {
- String username = mUsernameSingUp.getText().toString().trim();
- mDatabase.child("takenUsernames").orderByChild("Username").equalTo(username).addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- if (!dataSnapshot.hasChildren()) {
- registerUser();
- } else {
- Toast.makeText(SignupActivity.this, "Username already taken", Toast.LENGTH_LONG).show();
- }
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }
- });
- }
- private void registerUser() {
- //getting email, username and password from edit texts
- String username = mUsernameSingUp.getText().toString().trim();
- String email = mEmailSingUp.getText().toString().trim();
- String password = mPasswordSingUp.getText().toString().trim();
- //checking if email, passwords and username are empty
- if (TextUtils.isEmpty(username)) {
- Toast.makeText(SignupActivity.this, "Please enter username", Toast.LENGTH_LONG).show();
- return;
- }
- if (TextUtils.isEmpty(email)) {
- Toast.makeText(SignupActivity.this, "Please enter email", Toast.LENGTH_LONG).show();
- return;
- }
- if (TextUtils.isEmpty(password)) {
- Toast.makeText(SignupActivity.this, "Please enter password", Toast.LENGTH_LONG).show();
- return;
- }
- //if the email, password and username are not empty
- //displaying a progress dialog
- progressDialog.setMessage("Registering Please Wait...");
- 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()) {
- createNewUser(task.getResult().getUser());
- startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
- } else {
- //display some message here
- Toast.makeText(SignupActivity.this, "Registration Error", Toast.LENGTH_LONG).show();
- }
- progressDialog.dismiss();
- }
- });
- }
- private void createNewUser(FirebaseUser userFromRegistration) {
- String username = mUsernameSingUp.getText().toString().trim();
- String emailReg = userFromRegistration.getEmail();
- String userIdReg = userFromRegistration.getUid();
- Map<String, String> newUser = new HashMap<>();
- newUser.put("Username", username);
- newUser.put("Email", emailReg);
- mDatabase.child("users").child(userIdReg).setValue(newUser);
- Map<String, String> usernameIsTaken = new HashMap<>();
- usernameIsTaken.put("Username", username);
- mDatabase.child("takenUsernames").push().setValue(usernameIsTaken);
- }
- @Override
- public void onClick(View view) {
- if (view == mSingUpBtn) {
- checkUser();
- }
- if (view == mRegTv) {
- //open login activity when user taps on the already registered textview
- startActivity(new Intent(this, LoginActivity.class));
- }
- }
- }
- mDatabase.child("usernameTaken").addValueEventListener(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot snapshot) {
- for(DataSnapshot IDGenerado : snapshot){
- String usernameTaken = IDGenerado.child("Username").getValue(String.class);
- if(username.equals(usernameTaken))
- flag = true; // Indica que ya fue tomado el username
- }
- // si el flag nunca se marco como verdadero, entonces no se ha tomado el username
- if(!flag)
- registerUser();
- else
- Toast.makeText(SignupActivity.this, "Username already taken", Toast.LENGTH_LONG).show();
- }
- @Override public void onCancelled(DatabaseError error) { }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement