mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Add an observable that notifies of every download progress
This commit is contained in:
		| @@ -219,8 +219,8 @@ public class DownloadManager { | ||||
|                 .doOnNext(p -> { | ||||
|                     page.setImagePath(imagePath.getAbsolutePath()); | ||||
|                     page.setProgress(100); | ||||
|                     page.setStatus(Page.READY); | ||||
|                     download.downloadedImages++; | ||||
|                     page.setStatus(Page.READY); | ||||
|                 }) | ||||
|                 // If the download fails, mark this page as error | ||||
|                 .doOnError(e -> page.setStatus(Page.ERROR)) | ||||
|   | ||||
| @@ -4,6 +4,7 @@ import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| import eu.kanade.mangafeed.data.database.models.Chapter; | ||||
| import eu.kanade.mangafeed.data.source.model.Page; | ||||
| import rx.Observable; | ||||
| import rx.subjects.PublishSubject; | ||||
|  | ||||
| @@ -58,4 +59,33 @@ public class DownloadQueue { | ||||
|         return statusSubject; | ||||
|     } | ||||
|  | ||||
|     public Observable<Download> getProgressObservable() { | ||||
|         return statusSubject | ||||
|                 .startWith(getActiveDownloads()) | ||||
|                 .flatMap(download -> { | ||||
|                     if (download.getStatus() == Download.DOWNLOADING) { | ||||
|                         PublishSubject<Integer> pageStatusSubject = PublishSubject.create(); | ||||
|                         setPagesSubject(download.pages, pageStatusSubject); | ||||
|                         return pageStatusSubject | ||||
|                                 .filter(status -> status == Page.READY) | ||||
|                                 .flatMap(status -> Observable.just(download)); | ||||
|  | ||||
|                     } else if (download.getStatus() == Download.DOWNLOADED || | ||||
|                             download.getStatus() == Download.ERROR) { | ||||
|  | ||||
|                         setPagesSubject(download.pages, null); | ||||
|                     } | ||||
|                     return Observable.just(download); | ||||
|                 }) | ||||
|                 .filter(download -> download.getStatus() == Download.DOWNLOADING); | ||||
|     } | ||||
|  | ||||
|     private void setPagesSubject(List<Page> pages, PublishSubject<Integer> subject) { | ||||
|         if (pages != null) { | ||||
|             for (Page page : pages) { | ||||
|                 page.setStatusSubject(subject); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -86,7 +86,6 @@ public class MangaInfoFragment extends BaseRxFragment<MangaInfoPresenter> { | ||||
|             } else { | ||||
|                 coverCache.loadFromNetwork(cover, manga.thumbnail_url, headers); | ||||
|             } | ||||
|             cover.setTag(manga.thumbnail_url); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user