Allow to delete downloaded chapters
This commit is contained in:
		
							parent
							
								
									fa28ccc19a
								
							
						
					
					
						commit
						3b9f4cb6f1
					
				| @ -226,4 +226,8 @@ public class DownloadManager { | |||||||
|         return new File(preferences.getDownloadsDirectory(), chapterRelativePath); |         return new File(preferences.getDownloadsDirectory(), chapterRelativePath); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public void deleteChapter(Source source, Manga manga, Chapter chapter) { | ||||||
|  |         File path = getAbsoluteChapterDirectory(source, manga, chapter); | ||||||
|  |         DiskUtils.deleteFiles(path); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -41,6 +41,7 @@ public class MangaChaptersPresenter extends BasePresenter<MangaChaptersFragment> | |||||||
| 
 | 
 | ||||||
|     private Subscription markReadSubscription; |     private Subscription markReadSubscription; | ||||||
|     private Subscription downloadSubscription; |     private Subscription downloadSubscription; | ||||||
|  |     private Subscription deleteSubscription; | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     protected void onCreate(Bundle savedState) { |     protected void onCreate(Bundle savedState) { | ||||||
| @ -118,9 +119,6 @@ public class MangaChaptersPresenter extends BasePresenter<MangaChaptersFragment> | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void markChaptersRead(Observable<Chapter> selectedChapters, boolean read) { |     public void markChaptersRead(Observable<Chapter> selectedChapters, boolean read) { | ||||||
|         if (markReadSubscription != null) |  | ||||||
|             remove(markReadSubscription); |  | ||||||
| 
 |  | ||||||
|         add(markReadSubscription = selectedChapters |         add(markReadSubscription = selectedChapters | ||||||
|                 .subscribeOn(Schedulers.io()) |                 .subscribeOn(Schedulers.io()) | ||||||
|                 .map(chapter -> { |                 .map(chapter -> { | ||||||
| @ -130,16 +128,14 @@ public class MangaChaptersPresenter extends BasePresenter<MangaChaptersFragment> | |||||||
|                 .toList() |                 .toList() | ||||||
|                 .flatMap(db::insertChapters) |                 .flatMap(db::insertChapters) | ||||||
|                 .observeOn(AndroidSchedulers.mainThread()) |                 .observeOn(AndroidSchedulers.mainThread()) | ||||||
|  |                 .doOnCompleted( () -> remove(markReadSubscription) ) | ||||||
|                 .subscribe(result -> { |                 .subscribe(result -> { | ||||||
| 
 |  | ||||||
|                 })); |                 })); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void downloadChapters(Observable<Chapter> selectedChapters) { |     public void downloadChapters(Observable<Chapter> selectedChapters) { | ||||||
|         if (downloadSubscription != null) |  | ||||||
|             remove(downloadSubscription); |  | ||||||
| 
 |  | ||||||
|         add(downloadSubscription = selectedChapters |         add(downloadSubscription = selectedChapters | ||||||
|  |                 .doOnCompleted(() -> remove(downloadSubscription)) | ||||||
|                 .subscribe(chapter -> { |                 .subscribe(chapter -> { | ||||||
|                     EventBus.getDefault().post( |                     EventBus.getDefault().post( | ||||||
|                             new DownloadChapterEvent(manga, chapter)); |                             new DownloadChapterEvent(manga, chapter)); | ||||||
| @ -155,4 +151,13 @@ public class MangaChaptersPresenter extends BasePresenter<MangaChaptersFragment> | |||||||
|             chapter.downloaded = Chapter.NOT_DOWNLOADED; |             chapter.downloaded = Chapter.NOT_DOWNLOADED; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     public void deleteChapters(Observable<Chapter> selectedChapters) { | ||||||
|  |         deleteSubscription = selectedChapters | ||||||
|  |                 .doOnCompleted( () -> remove(deleteSubscription) ) | ||||||
|  |                 .subscribe(chapter -> { | ||||||
|  |                     downloadManager.deleteChapter(source, manga, chapter); | ||||||
|  |                     chapter.downloaded = Chapter.NOT_DOWNLOADED; | ||||||
|  |                 }); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -34,6 +34,7 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> { | |||||||
|     private Manga manga; |     private Manga manga; | ||||||
|     private Chapter chapter; |     private Chapter chapter; | ||||||
|     private List<Page> pageList; |     private List<Page> pageList; | ||||||
|  |     private boolean isDownloaded; | ||||||
|     @State int currentPage; |     @State int currentPage; | ||||||
| 
 | 
 | ||||||
|     private static final int GET_PAGE_LIST = 1; |     private static final int GET_PAGE_LIST = 1; | ||||||
| @ -52,13 +53,11 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> { | |||||||
|                     if (currentPage != 0) |                     if (currentPage != 0) | ||||||
|                         view.setSelectedPage(currentPage); |                         view.setSelectedPage(currentPage); | ||||||
|                 }, |                 }, | ||||||
|                 (view, error) -> Timber.e("An error occurred while downloading page list") |                 (view, error) -> Timber.e("An error occurred while downloading page list")); | ||||||
|         ); |  | ||||||
| 
 | 
 | ||||||
|         restartableReplay(GET_PAGE_IMAGES, |         restartableReplay(GET_PAGE_IMAGES, | ||||||
|                 this::getPageImagesObservable, |                 this::getPageImagesObservable, | ||||||
|                 (view, page) -> { |                 (view, page) -> {}, | ||||||
|                 }, |  | ||||||
|                 (view, error) -> Timber.e("An error occurred while downloading an image")); |                 (view, error) -> Timber.e("An error occurred while downloading an image")); | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
| @ -77,8 +76,9 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> { | |||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     protected void onDestroy() { |     protected void onDestroy() { | ||||||
|  |         if (!isDownloaded) | ||||||
|             source.savePageList(chapter.url, pageList); |             source.savePageList(chapter.url, pageList); | ||||||
|         saveChapter(); |         saveChapterProgress(); | ||||||
|         super.onDestroy(); |         super.onDestroy(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -87,6 +87,7 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> { | |||||||
|         source = event.getSource(); |         source = event.getSource(); | ||||||
|         manga = event.getManga(); |         manga = event.getManga(); | ||||||
|         chapter = event.getChapter(); |         chapter = event.getChapter(); | ||||||
|  |         isDownloaded = chapter.downloaded == Chapter.DOWNLOADED; | ||||||
|         if (chapter.last_page_read != 0 && !chapter.read) |         if (chapter.last_page_read != 0 && !chapter.read) | ||||||
|             currentPage = chapter.last_page_read; |             currentPage = chapter.last_page_read; | ||||||
| 
 | 
 | ||||||
| @ -96,7 +97,7 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private Observable<List<Page>> getPageListObservable() { |     private Observable<List<Page>> getPageListObservable() { | ||||||
|         if (chapter.downloaded != Chapter.DOWNLOADED) |         if (!isDownloaded) | ||||||
|             return source.pullPageListFromNetwork(chapter.url) |             return source.pullPageListFromNetwork(chapter.url) | ||||||
|                     .subscribeOn(Schedulers.io()) |                     .subscribeOn(Schedulers.io()) | ||||||
|                     .observeOn(AndroidSchedulers.mainThread()); |                     .observeOn(AndroidSchedulers.mainThread()); | ||||||
| @ -107,7 +108,7 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> { | |||||||
|     private Observable<Page> getPageImagesObservable() { |     private Observable<Page> getPageImagesObservable() { | ||||||
|         Observable<Page> pages; |         Observable<Page> pages; | ||||||
| 
 | 
 | ||||||
|         if (chapter.downloaded != Chapter.DOWNLOADED) { |         if (!isDownloaded) { | ||||||
|             pages = Observable |             pages = Observable | ||||||
|                     .merge(Observable.from(pageList).filter(page -> page.getImageUrl() != null), |                     .merge(Observable.from(pageList).filter(page -> page.getImageUrl() != null), | ||||||
|                             source.getRemainingImageUrlsFromPageList(pageList)) |                             source.getRemainingImageUrlsFromPageList(pageList)) | ||||||
| @ -129,7 +130,7 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> { | |||||||
|         this.currentPage = currentPage; |         this.currentPage = currentPage; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private void saveChapter() { |     private void saveChapterProgress() { | ||||||
|         chapter.last_page_read = currentPage; |         chapter.last_page_read = currentPage; | ||||||
|         if (currentPage == pageList.size() - 1) { |         if (currentPage == pageList.size() - 1) { | ||||||
|             chapter.read = true; |             chapter.read = true; | ||||||
|  | |||||||
| @ -144,6 +144,10 @@ public class MangaChaptersFragment extends BaseRxFragment<MangaChaptersPresenter | |||||||
|                 getPresenter().downloadChapters(getSelectedChapters()); |                 getPresenter().downloadChapters(getSelectedChapters()); | ||||||
|                 closeActionMode(); |                 closeActionMode(); | ||||||
|                 return true; |                 return true; | ||||||
|  |             case R.id.action_delete: | ||||||
|  |                 getPresenter().deleteChapters(getSelectedChapters()); | ||||||
|  |                 closeActionMode(); | ||||||
|  |                 return true; | ||||||
|         } |         } | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -8,6 +8,11 @@ | |||||||
|         android:icon="@drawable/ic_file_download" |         android:icon="@drawable/ic_file_download" | ||||||
|         app:showAsAction="ifRoom"/> |         app:showAsAction="ifRoom"/> | ||||||
| 
 | 
 | ||||||
|  |     <item android:id="@+id/action_delete" | ||||||
|  |         android:title="@string/action_delete" | ||||||
|  |         android:icon="@drawable/ic_action_delete" | ||||||
|  |         app:showAsAction="ifRoom"/> | ||||||
|  | 
 | ||||||
|     <item android:id="@+id/action_mark_as_read" |     <item android:id="@+id/action_mark_as_read" | ||||||
|         android:title="@string/action_mark_as_read" |         android:title="@string/action_mark_as_read" | ||||||
|         android:icon="@drawable/ic_action_done_all" |         android:icon="@drawable/ic_action_done_all" | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 inorichi
						inorichi