inorichi 9 жил өмнө
parent
commit
3561392d24

+ 2 - 2
app/src/main/java/eu/kanade/mangafeed/data/helpers/NetworkHelper.java

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

+ 17 - 13
app/src/main/java/eu/kanade/mangafeed/presenter/ReaderPresenter.java

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

+ 2 - 1
app/src/main/java/eu/kanade/mangafeed/sources/base/Source.java

@@ -103,7 +103,8 @@ public abstract class Source extends BaseSource {
     }
 
     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) {