Tried to add a new field of data to Firebase user when registering, but no update X method in FirebaseUser.class file

I am using the Realtime database, so the users are store in the database. I am attempting to implement a ‘currentLocation’ field for the FirebaseUser objects so that I can eventually create a list for each user of nearby users. I was already using a HashMap to input the data, so I just added hashmap.put(‘currentLocation’, ”); to create an empty current location field that can be updated later.

Unfortunately though I cannot find a way to set/update the currentLocation field as there is no updateCurrentLocation() method in the FirebaseUser.class. How do I add this method to this read-only file? Is this even the best way to do this?

Code:

    //Dashboard.java
usedLocationClient.getLastLocation()
                .addOnSuccessListener(this, new OnSuccessListener<Location>() {
                    @Override
                    public void onSuccess(Location location) {
                        // Got last known location. In some rare situations this can be null.
                        if (location != null) {
                            // Logic to handle location object
                            //get current user
                            final FirebaseUser fUser = FirebaseAuth.getInstance().getCurrentUser();

                            //Updates the firebase db user with their current location.
                            fUser.updateCurrentLocation(location);
                            
                            //This method is not in the firebaseuser.class file but needs to be!
                            //fUser.updateCurrentLocation(location);
                        }
                    }
                });
                
    //RegisterActivity.java

mAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            // Sign in success, dismiss dialog and start register activity
                            progressDialog.dismiss();

                            FirebaseUser user = mAuth.getCurrentUser();
                            //Get user email and uid from auth
                            String email = user.getEmail();
                            String uid = user.getUid();
                            //When user is registered store user info in firebase realtime database too
                            //using HashMap
                            HashMap<Object, String> hashMap = new HashMap<>();
                            //put info in hasmap
                            hashMap.put("email", email);
                            hashMap.put("uid", uid);
                            hashMap.put("name", ""); //will add later (e.g. edit profile)
      
                            hashMap.put("currentLocation", "");
                            hashMap.put("onlineStatus", "online"); //will add later (e.g. edit profile)
                            hashMap.put("typingTo", "noOne"); //will add later (e.g. edit profile)
                            hashMap.put("phone", ""); //will add later (e.g. edit profile)
                            hashMap.put("image", ""); //will add later (e.g. edit profile)
                            hashMap.put("cover", ""); //will add later (e.g. edit profile)

                            //firebase database instance
                            FirebaseDatabase database = FirebaseDatabase.getInstance();
                            //path to store user data named "Users"
                            DatabaseReference reference = database.getReference("Users");
                            //put data within hashmap in database
                            reference.child(uid).setValue(hashMap);

                            Toast.makeText(RegisterActivity.this, "Registered...n"+user.getEmail(), Toast.LENGTH_SHORT).show();
                            startActivity(new Intent(RegisterActivity.this, DashboardActivity.class));
                            finish();
                        
//FirebaseUser.class Bytecode

@NonNull
public Task<Void> updateEmail(@NonNull String email) {
    Preconditions.checkNotEmpty(email);
    return FirebaseAuth.getInstance(this.zza()).zzn(this, email);
}

@NonNull
public Task<Void> updatePassword(@NonNull String password) {
    Preconditions.checkNotEmpty(password);
    return FirebaseAuth.getInstance(this.zza()).zzo(this, password);
}

@NonNull
public Task<Void> updatePhoneNumber(@NonNull PhoneAuthCredential credential) {
    return FirebaseAuth.getInstance(this.zza()).zzp(this, credential);
}

@NonNull
public Task<Void> updateProfile(@NonNull UserProfileChangeRequest request) {
    Preconditions.checkNotNull(request);
    return FirebaseAuth.getInstance(this.zza()).zzq(this, request);
}

Answer

FirebaseUser class, has only a few fields that are related to the authentication. If you need more details about your users, you should create a POJO class to store additional data.

This data can be stored either in Cloud Firestore or in the Realtime Database so it can be later used.

Please also note, the Realtime Database doesn’t store null values. Firestore does.