I have this codebase where I set a value. In offline mode it writes successfully but is not calling the CompletionListener.onComplete callback function.
newOrderRef.setValue(order, (firebaseError, firebase) -> {
if (firebaseError != null) {
Timber.e(firebaseError.toException(), "Order create failed, id: %s", order.getOrderId());
subscriber.onError(firebaseError.toException());
} else {
Timber.i("Order created, id: %s", order.getOrderId());
newOrderRef.setPriority(0 - timestamp);
subscriber.onNext(firebase.getKey());
subscriber.onCompleted();
}
});
The callback never gets called. But writes fine.
In another case even after unsubscribing in onDestroy
using CompositeSubscription
, the subscriber gets called when the value gets to write to firebase server even when the fragment is not running.
Is this the correct behavior ?
Subscription orderSubscription = OrderManager.createOrder(order)
.subscribe(s -> {
fabShowSuccess();
showSnackbar("onnext Order created " + order.getOrderId());
}, throwable -> {
showSnackbar("Order failed. Make sure your are connected to internet.");
fabShowFailed();
}, () -> {
fabShowSuccess();
showSnackbar("Order created " + order.getOrderId());
});
mCompositeSubscription.add(orderSubscription);
In onDestroy()
I call mCompositeSubscription.unsubscribe();
, but the subscriber gets called later.