diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2014-04-05 14:55:40 +0200 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-04-05 18:23:20 +0200 |
| commit | cca4c9b0bcc1bd7742d419166fd5cfd5415fde9e (patch) | |
| tree | 5c88f703e8130e07ff98e0f13277a8fddc44d2b1 /main/src/cgeo/geocaching/connector | |
| parent | de71f9ba50bf7ee8f8987402b52912b014c5b460 (diff) | |
| download | cgeo-cca4c9b0bcc1bd7742d419166fd5cfd5415fde9e.zip cgeo-cca4c9b0bcc1bd7742d419166fd5cfd5415fde9e.tar.gz cgeo-cca4c9b0bcc1bd7742d419166fd5cfd5415fde9e.tar.bz2 | |
Do not use AndroidObservable
This lets us return to an unmodified version of RxJava.
Diffstat (limited to 'main/src/cgeo/geocaching/connector')
| -rw-r--r-- | main/src/cgeo/geocaching/connector/gc/RecaptchaHandler.java | 72 |
1 files changed, 44 insertions, 28 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/RecaptchaHandler.java b/main/src/cgeo/geocaching/connector/gc/RecaptchaHandler.java index 934cc88..2fd782c 100644 --- a/main/src/cgeo/geocaching/connector/gc/RecaptchaHandler.java +++ b/main/src/cgeo/geocaching/connector/gc/RecaptchaHandler.java @@ -4,12 +4,10 @@ import cgeo.geocaching.R; import cgeo.geocaching.loaders.RecaptchaReceiver; import cgeo.geocaching.network.Network; import cgeo.geocaching.utils.Log; +import cgeo.geocaching.utils.RxUtils; import org.apache.commons.io.IOUtils; - import rx.Observable; -import rx.android.observables.AndroidObservable; -import rx.schedulers.Schedulers; import rx.functions.Action1; import rx.functions.Func0; @@ -39,17 +37,36 @@ public class RecaptchaHandler extends Handler { } private void loadChallenge(final ImageView imageView, final View reloadButton) { - getCaptcha().subscribe(new Action1<Bitmap>() { + final Observable<Bitmap> captcha = Observable.defer(new Func0<Observable<? extends Bitmap>>() { + @Override + public Observable<? extends Bitmap> call() { + final String url = "http://www.google.com/recaptcha/api/image?c=" + recaptchaReceiver.getChallenge(); + final InputStream is = Network.getResponseStream(Network.getRequest(url)); + if (is != null) { + try { + final Bitmap img = BitmapFactory.decodeStream(is); + return Observable.from(img); + } catch (final Exception e) { + Log.e("RecaptchaHandler.getCaptcha", e); + return Observable.error(e); + } finally { + IOUtils.closeQuietly(is); + } + } + return Observable.empty(); + } + }); + RxUtils.subscribeOnIOThenUI(captcha, new Action1<Bitmap>() { @Override public void call(final Bitmap bitmap) { imageView.setImageBitmap(bitmap); } }, new Action1<Throwable>() { - @Override - public void call(final Throwable throwable) { - // Do nothing - } - }); + @Override + public void call(final Throwable throwable) { + // Do nothing + } + }); reloadButton.setEnabled(true); } @@ -89,26 +106,25 @@ public class RecaptchaHandler extends Handler { } private Observable<Bitmap> getCaptcha() { - return AndroidObservable.bindActivity(activity, - Observable.defer(new Func0<Observable<? extends Bitmap>>() { - @Override - public Observable<? extends Bitmap> call() { - final String url = "http://www.google.com/recaptcha/api/image?c=" + recaptchaReceiver.getChallenge(); - final InputStream is = Network.getResponseStream(Network.getRequest(url)); - if (is != null) { - try { - final Bitmap img = BitmapFactory.decodeStream(is); - return Observable.from(img); - } catch (final Exception e) { - Log.e("RecaptchaHandler.getCaptcha", e); - return Observable.error(e); - } finally { - IOUtils.closeQuietly(is); - } - } - return Observable.empty(); + return Observable.defer(new Func0<Observable<? extends Bitmap>>() { + @Override + public Observable<? extends Bitmap> call() { + final String url = "http://www.google.com/recaptcha/api/image?c=" + recaptchaReceiver.getChallenge(); + final InputStream is = Network.getResponseStream(Network.getRequest(url)); + if (is != null) { + try { + final Bitmap img = BitmapFactory.decodeStream(is); + return Observable.from(img); + } catch (final Exception e) { + Log.e("RecaptchaHandler.getCaptcha", e); + return Observable.error(e); + } finally { + IOUtils.closeQuietly(is); } - }).subscribeOn(Schedulers.io())); + } + return Observable.empty(); + } + }); } } |
