diff --git a/src/main/java/ru/touchin/roboswag/components/utils/BaseLifecycleBindable.java b/src/main/java/ru/touchin/roboswag/components/utils/BaseLifecycleBindable.java index 61a9f6d..9a446da 100644 --- a/src/main/java/ru/touchin/roboswag/components/utils/BaseLifecycleBindable.java +++ b/src/main/java/ru/touchin/roboswag/components/utils/BaseLifecycleBindable.java @@ -158,11 +158,15 @@ public class BaseLifecycleBindable implements LifecycleBindable { @NonNull final Action1 onNextAction, @NonNull final Action1 onErrorAction, @NonNull final Action0 onCompletedAction) { + final Observable actualObservable; + if (onNextAction == Actions.empty() && onNextAction == Actions.empty() && onNextAction == Actions.empty()) { + actualObservable = observable.doOnCompleted(onCompletedAction); + } else { + actualObservable = observable.observeOn(AndroidSchedulers.mainThread()).doOnCompleted(onCompletedAction); + } + return isCreatedSubject.first() - .switchMap(created -> created - ? observable.observeOn(AndroidSchedulers.mainThread()).doOnCompleted(onCompletedAction) - : Observable.empty()) - //TODO: basically takeUntil is calling completed so investigate observable = ***.first() behavior and doOnCompleted also + .switchMap(created -> created ? actualObservable : Observable.empty()) .takeUntil(conditionSubject.filter(condition -> condition)) .subscribe(onNextAction, throwable -> { final boolean isRxError = throwable instanceof OnErrorThrowable;