mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-18 15:07:30 +01:00
Allow manual retries of images (needs improvement)
This commit is contained in:
@@ -171,9 +171,9 @@ public class DownloadManager {
|
||||
.doOnNext(pages -> download.downloadedImages = 0)
|
||||
.doOnNext(pages -> download.setStatus(Download.DOWNLOADING))
|
||||
// Get all the URLs to the source images, fetch pages if necessary
|
||||
.flatMap(pageList -> Observable.merge(
|
||||
Observable.from(pageList).filter(page -> page.getImageUrl() != null),
|
||||
download.source.getRemainingImageUrlsFromPageList(pageList)))
|
||||
.flatMap(pageList -> Observable.from(pageList)
|
||||
.filter(page -> page.getImageUrl() != null)
|
||||
.mergeWith(download.source.getRemainingImageUrlsFromPageList(pageList)))
|
||||
// Start downloading images, consider we can have downloaded images already
|
||||
.concatMap(page -> getDownloadedImage(page, download.source, download.directory))
|
||||
.doOnNext(p -> download.downloadedImages++)
|
||||
|
||||
@@ -101,7 +101,7 @@ public abstract class Source extends BaseSource {
|
||||
.concatMap(batchedPages -> batchedPages.concatMap(this::getImageUrlFromPage));
|
||||
}
|
||||
|
||||
private Observable<Page> getImageUrlFromPage(final Page page) {
|
||||
public Observable<Page> getImageUrlFromPage(final Page page) {
|
||||
page.setStatus(Page.LOAD_PAGE);
|
||||
return mNetworkService
|
||||
.getStringResponse(overrideRemainingPagesUrl(page.getUrl()), mRequestHeaders, null)
|
||||
@@ -118,26 +118,30 @@ public abstract class Source extends BaseSource {
|
||||
}
|
||||
|
||||
public Observable<Page> getCachedImage(final Page page) {
|
||||
Observable<Page> obs = Observable.just(page);
|
||||
Observable<Page> pageObservable = Observable.just(page);
|
||||
if (page.getImageUrl() == null)
|
||||
return obs;
|
||||
return pageObservable;
|
||||
|
||||
if (!mCacheManager.isImageInCache(page.getImageUrl())) {
|
||||
page.setStatus(Page.DOWNLOAD_IMAGE);
|
||||
obs = cacheImage(page);
|
||||
}
|
||||
|
||||
return obs.flatMap(p -> {
|
||||
page.setImagePath(mCacheManager.getImagePath(page.getImageUrl()));
|
||||
page.setStatus(Page.READY);
|
||||
return Observable.just(page);
|
||||
}).onErrorResumeNext(e -> {
|
||||
page.setStatus(Page.ERROR);
|
||||
return Observable.just(page);
|
||||
});
|
||||
return pageObservable
|
||||
.flatMap(p -> {
|
||||
if (!mCacheManager.isImageInCache(page.getImageUrl())) {
|
||||
return cacheImage(page);
|
||||
}
|
||||
return Observable.just(page);
|
||||
})
|
||||
.flatMap(p -> {
|
||||
page.setImagePath(mCacheManager.getImagePath(page.getImageUrl()));
|
||||
page.setStatus(Page.READY);
|
||||
return Observable.just(page);
|
||||
})
|
||||
.onErrorResumeNext(e -> {
|
||||
page.setStatus(Page.ERROR);
|
||||
return Observable.just(page);
|
||||
});
|
||||
}
|
||||
|
||||
private Observable<Page> cacheImage(final Page page) {
|
||||
page.setStatus(Page.DOWNLOAD_IMAGE);
|
||||
return getImageProgressResponse(page)
|
||||
.flatMap(resp -> {
|
||||
if (!mCacheManager.putImageToDiskCache(page.getImageUrl(), resp)) {
|
||||
|
||||
Reference in New Issue
Block a user