So here are two situations when there is no network:
Withtout using any query I'm getting an error:
collectionReference.document().get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
Log.d(TAG, "onComplete: success");
} else {
Log.d(TAG, "onComplete: " + task.getException());
}
}
});
The same goes for addOnFailureListener
where I'm able to log the errors for the above example i.e.:
Failed to get document because the client is offline
Now, while using queries, I get no error, examples:
collectionReference.limit(1).get().addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "onFailure: " + e.getMessage());
}
}).addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
Log.d(TAG, "onSuccess: ");
}
});
Used the limit
option. Other case examples:
collectionReference.addSnapshotListener((queryDocumentSnapshots, e) -> {
if (e != null) {
Log.d(TAG, "onEvent: error" + e);
return;
}
if (queryDocumentSnapshots != null) {
Log.d(TAG, "onEvent: success");
} else {
Log.d(TAG, "onEvent: no result");
}
});
Or using document
:
collectionReference.document("path").addSnapshotListener((documentSnapshot, e) -> {
if (e != null) {
Log.d(TAG, "onEvent: error" + e);
return;
}
if (documentSnapshot != null) {
Log.d(TAG, "onEvent: success");
} else {
Log.d(TAG, "onEvent: no result");
}
});
Another one that returns success
:
collectionReference.limit(1).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
Log.d(TAG, "onComplete: success");
} else {
Log.d(TAG, "onComplete: error " + task.getException());
}
}
});
Current dependency:
implementation 'com.google.firebase:firebase-firestore:17.1.0'
All the above examples returns success
even if it fails. So is this is a bug or that it's suppose to work like this?