aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/network
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/network')
-rw-r--r--main/src/cgeo/geocaching/network/HtmlImage.java32
-rw-r--r--main/src/cgeo/geocaching/network/StatusUpdater.java32
2 files changed, 27 insertions, 37 deletions
diff --git a/main/src/cgeo/geocaching/network/HtmlImage.java b/main/src/cgeo/geocaching/network/HtmlImage.java
index f464e84..8040598 100644
--- a/main/src/cgeo/geocaching/network/HtmlImage.java
+++ b/main/src/cgeo/geocaching/network/HtmlImage.java
@@ -13,23 +13,19 @@ import cgeo.geocaching.utils.Log;
import ch.boye.httpclientandroidlib.HttpResponse;
import ch.boye.httpclientandroidlib.androidextra.Base64;
-
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
-
import rx.Observable;
-import rx.Observable.OnSubscribeFunc;
-import rx.Observer;
+import rx.Observable.OnSubscribe;
import rx.Scheduler;
-import rx.Subscription;
+import rx.Subscriber;
import rx.schedulers.Schedulers;
import rx.subjects.PublishSubject;
import rx.subscriptions.CompositeSubscription;
-import rx.subscriptions.Subscriptions;
import rx.util.functions.Func1;
import android.content.res.Resources;
@@ -134,42 +130,39 @@ public class HtmlImage implements Html.ImageGetter {
final String pseudoGeocode = shared ? SHARED : geocode;
final Observable<Pair<BitmapDrawable, Boolean>> loadFromDisk =
- Observable.create(new OnSubscribeFunc<Pair<BitmapDrawable, Boolean>>() {
+ Observable.create(new OnSubscribe<Pair<BitmapDrawable, Boolean>>() {
@Override
- public Subscription onSubscribe(final Observer<? super Pair<BitmapDrawable, Boolean>> observer) {
+ public void call(final Subscriber<? super Pair<BitmapDrawable, Boolean>> subscriber) {
final Pair<Bitmap, Boolean> loadResult = loadImageFromStorage(url, pseudoGeocode, shared);
final Bitmap bitmap = loadResult.getLeft();
- observer.onNext(new ImmutablePair<BitmapDrawable, Boolean>(bitmap != null ?
+ subscriber.onNext(new ImmutablePair<BitmapDrawable, Boolean>(bitmap != null ?
ImageUtils.scaleBitmapToFitDisplay(bitmap) :
null,
loadResult.getRight()));
- observer.onCompleted();
- return Subscriptions.empty();
+ subscriber.onCompleted();
}
}).subscribeOn(Schedulers.computation());
final Observable<BitmapDrawable> downloadAndSave =
- Observable.create(new OnSubscribeFunc<BitmapDrawable>() {
+ Observable.create(new OnSubscribe<BitmapDrawable>() {
@Override
- public Subscription onSubscribe(final Observer<? super BitmapDrawable> observer) {
+ public void call(final Subscriber<? super BitmapDrawable> subscriber) {
final File file = LocalStorage.getStorageFile(pseudoGeocode, url, true, true);
if (url.startsWith("data:image/")) {
if (url.contains(";base64,")) {
saveBase64ToFile(url, file);
} else {
Log.e("HtmlImage.getDrawable: unable to decode non-base64 inline image");
- observer.onCompleted();
- return Subscriptions.empty();
+ subscriber.onCompleted();
}
} else {
if (subscription.isUnsubscribed() || downloadOrRefreshCopy(url, file)) {
// The existing copy was fresh enough or we were unsubscribed earlier.
- observer.onCompleted();
- return Subscriptions.empty();
+ subscriber.onCompleted();
}
}
if (onlySave) {
- observer.onCompleted();
+ subscriber.onCompleted();
} else {
loadFromDisk.map(new Func1<Pair<BitmapDrawable, Boolean>, BitmapDrawable>() {
@Override
@@ -182,9 +175,8 @@ public class HtmlImage implements Html.ImageGetter {
new BitmapDrawable(resources, BitmapFactory.decodeResource(resources, R.drawable.image_not_loaded)) :
getTransparent1x1Image(resources);
}
- }).subscribe(observer);
+ }).subscribe(subscriber);
}
- return Subscriptions.empty();
}
}).subscribeOn(downloadScheduler);
diff --git a/main/src/cgeo/geocaching/network/StatusUpdater.java b/main/src/cgeo/geocaching/network/StatusUpdater.java
index 84df168..838823b 100644
--- a/main/src/cgeo/geocaching/network/StatusUpdater.java
+++ b/main/src/cgeo/geocaching/network/StatusUpdater.java
@@ -5,11 +5,10 @@ import cgeo.geocaching.utils.Version;
import org.json.JSONException;
import org.json.JSONObject;
-
-import rx.Observable;
+import rx.Scheduler;
import rx.schedulers.Schedulers;
import rx.subjects.BehaviorSubject;
-import rx.util.functions.Func1;
+import rx.util.functions.Action1;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
@@ -50,23 +49,22 @@ public class StatusUpdater {
}
}
- final static private Observable<Status> statusObservable =
- Observable.interval(1800, TimeUnit.SECONDS).startWith(-1L).flatMap(new Func1<Long, Observable<Status>>() {
- @Override
- public Observable<Status> call(Long id) {
- final JSONObject response =
- Network.requestJSON("http://status.cgeo.org/api/status.json",
- new Parameters("version_code", String.valueOf(Version.getVersionCode(CgeoApplication.getInstance())),
- "version_name", Version.getVersionName(CgeoApplication.getInstance()),
- "locale", Locale.getDefault().toString()));
- return response != null ? Observable.from(Status.defaultStatus((new Status(response)))) : Observable.<Status>empty();
- }
- }).subscribeOn(Schedulers.io());
-
final static public BehaviorSubject<Status> latestStatus = BehaviorSubject.create(Status.defaultStatus(null));
static {
- statusObservable.subscribe(latestStatus);
+ Schedulers.io().schedulePeriodically(new Action1<Scheduler.Inner>() {
+ @Override
+ public void call(final Scheduler.Inner inner) {
+ final JSONObject response =
+ Network.requestJSON("http://status.cgeo.org/api/status.json",
+ new Parameters("version_code", String.valueOf(Version.getVersionCode(CgeoApplication.getInstance())),
+ "version_name", Version.getVersionName(CgeoApplication.getInstance()),
+ "locale", Locale.getDefault().toString()));
+ if (response != null) {
+ latestStatus.onNext(Status.defaultStatus(new Status(response)));
+ }
+ }
+ }, 0, 1800, TimeUnit.SECONDS);
}
private static String get(final JSONObject json, final String key) {