I'm creating a method that do a work, it increments a value every time onComplete
is finish, but it's causing a infinite loop on that field.
For instance when onComplete
finishes, the method executes and must increase 100 points, but it takes the points and keep increasing without ever ending.
This is my method:
@Override
public void afterTextChanged(Editable editable) {
refTrans.child(finalCurrentUserKey).child(Constants.FIRE_BASE_USER_DRIVER_PLUS).child("birthday").setValue(
etBirthday.getText().toString(), new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
addPoints(finalCurrentUserKey);
}
});
}
private void addPoints(final String finalCurrentUserKey){
// Create a reference to the DB
final FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();
final DatabaseReference refPoints = mDatabase.getReference(Constants.FIRE_BASE_USER_DRIVER);
final DatabaseReference scoreRef = refPoints.child(finalCurrentUserKey).child("score/increaseScore");
//final Double[] count = new Double[1];
final String operation = "increaseScore";
scoreRef.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
Integer score = mutableData.getValue(Integer.class);
if (score == null) {
return Transaction.success(mutableData);
}
if (operation.equals("increaseScore")) {
mutableData.setValue(score + 1);
} /*else if (operation.equals("decreaseScore")){
mutableData.setValue(score - 1);
}*/
//mutableData.setValue(1);
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {
}
});