mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Fix bookmarked chapters being deleted after manually marked as read
Fixes #9520
This commit is contained in:
		| @@ -214,19 +214,21 @@ class DownloadManager( | ||||
|      * @param source the source of the chapters. | ||||
|      */ | ||||
|     fun deleteChapters(chapters: List<Chapter>, manga: Manga, source: Source) { | ||||
|         val filteredChapters = getChaptersToDelete(chapters, manga) | ||||
|         if (filteredChapters.isNotEmpty()) { | ||||
|             launchIO { | ||||
|                 removeFromDownloadQueue(filteredChapters) | ||||
|         launchIO { | ||||
|             val filteredChapters = getChaptersToDelete(chapters, manga) | ||||
|             if (filteredChapters.isEmpty()) { | ||||
|                 return@launchIO | ||||
|             } | ||||
|  | ||||
|                 val (mangaDir, chapterDirs) = provider.findChapterDirs(filteredChapters, manga, source) | ||||
|                 chapterDirs.forEach { it.delete() } | ||||
|                 cache.removeChapters(filteredChapters, manga) | ||||
|             removeFromDownloadQueue(filteredChapters) | ||||
|  | ||||
|                 // Delete manga directory if empty | ||||
|                 if (mangaDir?.listFiles()?.isEmpty() == true) { | ||||
|                     deleteManga(manga, source, removeQueued = false) | ||||
|                 } | ||||
|             val (mangaDir, chapterDirs) = provider.findChapterDirs(filteredChapters, manga, source) | ||||
|             chapterDirs.forEach { it.delete() } | ||||
|             cache.removeChapters(filteredChapters, manga) | ||||
|  | ||||
|             // Delete manga directory if empty | ||||
|             if (mangaDir?.listFiles()?.isEmpty() == true) { | ||||
|                 deleteManga(manga, source, removeQueued = false) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @@ -278,7 +280,7 @@ class DownloadManager( | ||||
|      * @param chapters the list of chapters to delete. | ||||
|      * @param manga the manga of the chapters. | ||||
|      */ | ||||
|     fun enqueueChaptersToDelete(chapters: List<Chapter>, manga: Manga) { | ||||
|     suspend fun enqueueChaptersToDelete(chapters: List<Chapter>, manga: Manga) { | ||||
|         pendingDeleter.addChapters(getChaptersToDelete(chapters, manga), manga) | ||||
|     } | ||||
|  | ||||
| @@ -351,22 +353,24 @@ class DownloadManager( | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun getChaptersToDelete(chapters: List<Chapter>, manga: Manga): List<Chapter> { | ||||
|     private suspend fun getChaptersToDelete(chapters: List<Chapter>, manga: Manga): List<Chapter> { | ||||
|         // Retrieve the categories that are set to exclude from being deleted on read | ||||
|         val categoriesToExclude = downloadPreferences.removeExcludeCategories().get().map(String::toLong) | ||||
|  | ||||
|         val categoriesForManga = runBlocking { getCategories.await(manga.id) } | ||||
|         val categoriesForManga = getCategories.await(manga.id) | ||||
|             .map { it.id } | ||||
|             .takeUnless { it.isEmpty() } | ||||
|             ?: listOf(0) | ||||
|  | ||||
|         return if (categoriesForManga.intersect(categoriesToExclude).isNotEmpty()) { | ||||
|             .ifEmpty { listOf(0) } | ||||
|         val filteredCategoryManga = if (categoriesForManga.intersect(categoriesToExclude).isNotEmpty()) { | ||||
|             chapters.filterNot { it.read } | ||||
|         } else if (!downloadPreferences.removeBookmarkedChapters().get()) { | ||||
|             chapters.filterNot { it.bookmark } | ||||
|         } else { | ||||
|             chapters | ||||
|         } | ||||
|  | ||||
|         return if (!downloadPreferences.removeBookmarkedChapters().get()) { | ||||
|             filteredCategoryManga.filterNot { it.bookmark } | ||||
|         } else { | ||||
|             filteredCategoryManga | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun statusFlow(): Flow<Download> = queueState | ||||
|   | ||||
		Reference in New Issue
	
	Block a user