diff options
Diffstat (limited to 'main/src/cgeo/geocaching/SearchResult.java')
-rw-r--r-- | main/src/cgeo/geocaching/SearchResult.java | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/main/src/cgeo/geocaching/SearchResult.java b/main/src/cgeo/geocaching/SearchResult.java index 74cc59d..5de1298 100644 --- a/main/src/cgeo/geocaching/SearchResult.java +++ b/main/src/cgeo/geocaching/SearchResult.java @@ -16,6 +16,7 @@ import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import rx.Observable; +import rx.functions.Func0; import rx.functions.Func1; import rx.functions.Func2; @@ -215,10 +216,6 @@ public class SearchResult implements Parcelable { } /** - * @param excludeDisabled - * @param excludeMine - * @param cacheType - * @return */ public SearchResult filterSearchResults(final boolean excludeDisabled, final boolean excludeMine, final CacheType cacheType) { @@ -314,17 +311,17 @@ public class SearchResult implements Parcelable { public static <C extends IConnector> SearchResult parallelCombineActive(final Collection<C> connectors, final Func1<C, SearchResult> func) { - return Observable.from(connectors).parallel(new Func1<Observable<C>, Observable<SearchResult>>() { + return Observable.from(connectors).flatMap(new Func1<C, Observable<SearchResult>>() { @Override - public Observable<SearchResult> call(final Observable<C> cObservable) { - return cObservable.flatMap(new Func1<C, Observable<? extends SearchResult>>() { + public Observable<SearchResult> call(final C connector) { + return connector.isActive() ? Observable.defer(new Func0<Observable<SearchResult>>() { @Override - public Observable<? extends SearchResult> call(final C c) { - return c.isActive() ? Observable.from(func.call(c)) : Observable.<SearchResult>empty(); + public Observable<SearchResult> call() { + return Observable.just(func.call(connector)); } - }); + }).subscribeOn(RxUtils.networkScheduler) : Observable.<SearchResult>empty(); } - }, RxUtils.networkScheduler).reduce(new SearchResult(), new Func2<SearchResult, SearchResult, SearchResult>() { + }).reduce(new SearchResult(), new Func2<SearchResult, SearchResult, SearchResult>() { @Override public SearchResult call(final SearchResult searchResult, final SearchResult searchResult2) { searchResult.addSearchResult(searchResult2); |