Retry calls

This commit is contained in:
inorichi 2015-10-27 18:40:13 +01:00
parent 68e5efb02b
commit 3561392d24
3 changed files with 20 additions and 15 deletions

View File

@ -30,7 +30,7 @@ public final class NetworkHelper {
} }
public Observable<Response> getResponse(final String url, final Headers headers, final CacheControl cacheControl) { public Observable<Response> getResponse(final String url, final Headers headers, final CacheControl cacheControl) {
return Observable.create(subscriber -> { return Observable.<Response>create(subscriber -> {
try { try {
if (!subscriber.isUnsubscribed()) { if (!subscriber.isUnsubscribed()) {
Request request = new Request.Builder() Request request = new Request.Builder()
@ -44,7 +44,7 @@ public final class NetworkHelper {
} catch (Throwable e) { } catch (Throwable e) {
subscriber.onError(e); subscriber.onError(e);
} }
}); }).retry(3);
} }
public Observable<String> mapResponseToString(final Response response) { public Observable<String> mapResponseToString(final Response response) {

View File

@ -23,6 +23,7 @@ import icepick.State;
import rx.Observable; import rx.Observable;
import rx.android.schedulers.AndroidSchedulers; import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers; import rx.schedulers.Schedulers;
import timber.log.Timber;
public class ReaderPresenter extends BasePresenter<ReaderActivity> { public class ReaderPresenter extends BasePresenter<ReaderActivity> {
@ -45,9 +46,9 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> {
() -> getPageListObservable() () -> getPageListObservable()
.doOnNext(pages -> pageList = pages) .doOnNext(pages -> pageList = pages)
.doOnCompleted(() -> start(GET_PAGE_IMAGES)), .doOnCompleted(() -> start(GET_PAGE_IMAGES)),
(view, pages) -> { (view, pages) -> view.onPageListReady(pages),
view.onPageListReady(pages); (view, error) -> Timber.e("An error occurred while downloading page list")
}); );
restartableReplay(GET_PAGE_IMAGES, restartableReplay(GET_PAGE_IMAGES,
this::getPageImagesObservable, this::getPageImagesObservable,
@ -56,7 +57,8 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> {
if (page.getPageNumber() == savedSelectedPage) { if (page.getPageNumber() == savedSelectedPage) {
view.setCurrentPage(savedSelectedPage); view.setCurrentPage(savedSelectedPage);
} }
}); },
(view, error) -> Timber.e("An error occurred while downloading an image"));
} }
@Override @Override
@ -110,15 +112,17 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> {
} }
private Observable<Page> downloadImage(Page page) { private Observable<Page> downloadImage(Page page) {
FutureTarget<File> future = glideDownloader.load(page.getImageUrl()) if (page.getImageUrl() != null) {
.downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL); FutureTarget<File> future = glideDownloader.load(page.getImageUrl())
.downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
try { try {
File cacheFile = future.get(); File cacheFile = future.get();
page.setImagePath(cacheFile.getCanonicalPath()); page.setImagePath(cacheFile.getCanonicalPath());
page.setStatus(Page.READY); page.setStatus(Page.READY);
} catch (Exception e) { } catch (Exception e) {
page.setStatus(Page.ERROR); page.setStatus(Page.ERROR);
}
} }
return Observable.just(page); return Observable.just(page);

View File

@ -103,7 +103,8 @@ public abstract class Source extends BaseSource {
} }
public void savePageList(String chapterUrl, List<Page> pages) { public void savePageList(String chapterUrl, List<Page> pages) {
mCacheManager.putPageUrlsToDiskCache(chapterUrl, pages); if (pages != null)
mCacheManager.putPageUrlsToDiskCache(chapterUrl, pages);
} }
private List<Page> convertToPages(List<String> pageUrls) { private List<Page> convertToPages(List<String> pageUrls) {