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.