From bdd690e77151395fada029dd5aa76bcbfd87f191 Mon Sep 17 00:00:00 2001 From: Gavriil Sitnikov Date: Mon, 18 Apr 2016 11:49:56 +0300 Subject: [PATCH] cod fix --- .../components/navigation/BaseUiBindable.java | 46 +++++++++++++++++++ .../components/navigation/ViewController.java | 13 ++---- .../navigation/activities/BaseActivity.java | 16 +++---- 3 files changed, 58 insertions(+), 17 deletions(-) create mode 100644 src/main/java/ru/touchin/roboswag/components/navigation/BaseUiBindable.java diff --git a/src/main/java/ru/touchin/roboswag/components/navigation/BaseUiBindable.java b/src/main/java/ru/touchin/roboswag/components/navigation/BaseUiBindable.java new file mode 100644 index 0000000..03a81df --- /dev/null +++ b/src/main/java/ru/touchin/roboswag/components/navigation/BaseUiBindable.java @@ -0,0 +1,46 @@ +package ru.touchin.roboswag.components.navigation; + +import android.support.annotation.NonNull; + +import rx.Observable; +import rx.android.schedulers.AndroidSchedulers; +import rx.subjects.BehaviorSubject; + +/** + * Created by Gavriil Sitnikov on 18/04/16. + * TODO: description + */ +public class BaseUiBindable implements UiBindable { + + @NonNull + private final BehaviorSubject isCreatedSubject; + @NonNull + private final BehaviorSubject isStartedSubject; + + public BaseUiBindable(@NonNull final BehaviorSubject isCreatedSubject, + @NonNull final BehaviorSubject isStartedSubject) { + this.isCreatedSubject = isCreatedSubject; + this.isStartedSubject = isStartedSubject; + } + + @NonNull + public Observable bind(@NonNull final Observable observable) { + return isStartedSubject + .switchMap(isStarted -> isStarted ? observable.observeOn(AndroidSchedulers.mainThread()) : Observable.never()) + .takeUntil(isCreatedSubject.filter(created -> !created)); + } + + @NonNull + public Observable untilStop(@NonNull final Observable observable) { + return observable.observeOn(AndroidSchedulers.mainThread()) + .takeUntil(isStartedSubject.filter(started -> !started)); + } + + @NonNull + @Override + public Observable untilDestroy(@NonNull final Observable observable) { + return observable.observeOn(AndroidSchedulers.mainThread()) + .takeUntil(isCreatedSubject.filter(created -> !created)); + } + +} diff --git a/src/main/java/ru/touchin/roboswag/components/navigation/ViewController.java b/src/main/java/ru/touchin/roboswag/components/navigation/ViewController.java index c0fa968..1d58c9a 100644 --- a/src/main/java/ru/touchin/roboswag/components/navigation/ViewController.java +++ b/src/main/java/ru/touchin/roboswag/components/navigation/ViewController.java @@ -32,7 +32,6 @@ import android.view.ViewGroup; import ru.touchin.roboswag.components.navigation.activities.ViewControllerActivity; import ru.touchin.roboswag.components.navigation.fragments.ViewControllerFragment; import rx.Observable; -import rx.android.schedulers.AndroidSchedulers; import rx.subjects.BehaviorSubject; /** @@ -53,6 +52,8 @@ public class ViewController, private final BehaviorSubject isCreatedSubject = BehaviorSubject.create(true); @NonNull private final BehaviorSubject isStartedSubject = BehaviorSubject.create(); + @NonNull + private final BaseUiBindable baseUiBindable = new BaseUiBindable(isCreatedSubject, isStartedSubject); @SuppressWarnings("PMD.UnusedFormalParameter") //UnusedFormalParameter: savedInstanceState could be used by children @@ -130,22 +131,18 @@ public class ViewController, @NonNull public Observable bind(@NonNull final Observable observable) { - return isStartedSubject - .switchMap(isStarted -> isStarted ? observable.observeOn(AndroidSchedulers.mainThread()) : Observable.never()) - .takeUntil(isCreatedSubject.filter(created -> !created)); + return baseUiBindable.bind(observable); } @NonNull public Observable untilStop(@NonNull final Observable observable) { - return observable.observeOn(AndroidSchedulers.mainThread()) - .takeUntil(isStartedSubject.filter(started -> !started)); + return baseUiBindable.untilStop(observable); } @NonNull @Override public Observable untilDestroy(@NonNull final Observable observable) { - return observable.observeOn(AndroidSchedulers.mainThread()) - .takeUntil(isCreatedSubject.filter(created -> !created)); + return baseUiBindable.untilDestroy(observable); } public void onStart() { diff --git a/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java b/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java index 8e921dc..0944512 100644 --- a/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java +++ b/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java @@ -10,9 +10,9 @@ import android.view.inputmethod.InputMethodManager; import java.util.ArrayList; +import ru.touchin.roboswag.components.navigation.BaseUiBindable; import ru.touchin.roboswag.components.navigation.UiBindable; import rx.Observable; -import rx.android.schedulers.AndroidSchedulers; import rx.subjects.BehaviorSubject; /** @@ -24,9 +24,11 @@ public abstract class BaseActivity extends AppCompatActivity private final ArrayList onBackPressedListeners = new ArrayList<>(); @NonNull + private final BehaviorSubject isCreatedSubject = BehaviorSubject.create(); + @NonNull private final BehaviorSubject isStartedSubject = BehaviorSubject.create(); @NonNull - private final BehaviorSubject isCreatedSubject = BehaviorSubject.create(); + private final BaseUiBindable baseUiBindable = new BaseUiBindable(isCreatedSubject, isStartedSubject); @Override public void onCreate(final Bundle savedInstanceState, final PersistableBundle persistentState) { @@ -55,21 +57,17 @@ public abstract class BaseActivity extends AppCompatActivity @NonNull @Override public Observable bind(@NonNull final Observable observable) { - return isStartedSubject - .switchMap(isStarted -> isStarted ? observable.observeOn(AndroidSchedulers.mainThread()) : Observable.never()) - .takeUntil(isCreatedSubject.filter(created -> !created)); + return baseUiBindable.bind(observable); } @NonNull public Observable untilStop(@NonNull final Observable observable) { - return observable.observeOn(AndroidSchedulers.mainThread()) - .takeUntil(isStartedSubject.filter(started -> !started)); + return baseUiBindable.untilStop(observable); } @NonNull public Observable untilDestroy(@NonNull final Observable observable) { - return observable.observeOn(AndroidSchedulers.mainThread()) - .takeUntil(isCreatedSubject.filter(created -> !created)); + return baseUiBindable.untilDestroy(observable); } /**