mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Add option to prevent deleting bookmarked chapters (closes #2082)
This commit is contained in:
		@@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.data.database.models.Chapter
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.download.model.Download
 | 
			
		||||
import eu.kanade.tachiyomi.data.download.model.DownloadQueue
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.source.Source
 | 
			
		||||
import eu.kanade.tachiyomi.source.SourceManager
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.Page
 | 
			
		||||
@@ -24,10 +25,8 @@ import uy.kohesive.injekt.injectLazy
 | 
			
		||||
 */
 | 
			
		||||
class DownloadManager(private val context: Context) {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The sources manager.
 | 
			
		||||
     */
 | 
			
		||||
    private val sourceManager by injectLazy<SourceManager>()
 | 
			
		||||
    private val sourceManager: SourceManager by injectLazy()
 | 
			
		||||
    private val preferences: PreferencesHelper by injectLazy()
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Downloads provider, used to retrieve the folders where the chapters are or should be stored.
 | 
			
		||||
@@ -201,9 +200,16 @@ class DownloadManager(private val context: Context) {
 | 
			
		||||
     */
 | 
			
		||||
    fun deleteChapters(chapters: List<Chapter>, manga: Manga, source: Source) {
 | 
			
		||||
        queue.remove(chapters)
 | 
			
		||||
        val chapterDirs = provider.findChapterDirs(chapters, manga, source)
 | 
			
		||||
 | 
			
		||||
        val filteredChapters = if (!preferences.removeBookmarkedChapters()) {
 | 
			
		||||
            chapters.filterNot { it.bookmark }
 | 
			
		||||
        } else {
 | 
			
		||||
            chapters
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val chapterDirs = provider.findChapterDirs(filteredChapters, manga, source)
 | 
			
		||||
        chapterDirs.forEach { it.delete() }
 | 
			
		||||
        cache.removeChapters(chapters, manga)
 | 
			
		||||
        cache.removeChapters(filteredChapters, manga)
 | 
			
		||||
        if (cache.getDownloadCount(manga) == 0) { // Delete manga directory if empty
 | 
			
		||||
            chapterDirs.firstOrNull()?.parentFile?.delete()
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -97,6 +97,8 @@ object PreferenceKeys {
 | 
			
		||||
 | 
			
		||||
    const val removeAfterMarkedAsRead = "pref_remove_after_marked_as_read_key"
 | 
			
		||||
 | 
			
		||||
    const val removeBookmarkedChapters = "pref_remove_bookmarked"
 | 
			
		||||
 | 
			
		||||
    const val libraryUpdateInterval = "pref_library_update_interval_key"
 | 
			
		||||
 | 
			
		||||
    const val libraryUpdateRestriction = "library_update_restriction"
 | 
			
		||||
 
 | 
			
		||||
@@ -188,6 +188,8 @@ class PreferencesHelper(val context: Context) {
 | 
			
		||||
 | 
			
		||||
    fun removeAfterMarkedAsRead() = prefs.getBoolean(Keys.removeAfterMarkedAsRead, false)
 | 
			
		||||
 | 
			
		||||
    fun removeBookmarkedChapters() = prefs.getBoolean(Keys.removeBookmarkedChapters, false)
 | 
			
		||||
 | 
			
		||||
    fun libraryUpdateInterval() = flowPrefs.getInt(Keys.libraryUpdateInterval, 24)
 | 
			
		||||
 | 
			
		||||
    fun libraryUpdateRestriction() = prefs.getStringSet(Keys.libraryUpdateRestriction, setOf("wifi"))
 | 
			
		||||
 
 | 
			
		||||
@@ -494,8 +494,14 @@ class MangaPresenter(
 | 
			
		||||
     * @param chapters the chapters to delete.
 | 
			
		||||
     */
 | 
			
		||||
    private fun deleteChaptersInternal(chapters: List<ChapterItem>) {
 | 
			
		||||
        downloadManager.deleteChapters(chapters, manga, source)
 | 
			
		||||
        chapters.forEach {
 | 
			
		||||
        val filteredChapters = if (!preferences.removeBookmarkedChapters()) {
 | 
			
		||||
            chapters.filterNot { it.bookmark }
 | 
			
		||||
        } else {
 | 
			
		||||
            chapters
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        downloadManager.deleteChapters(filteredChapters, manga, source)
 | 
			
		||||
        filteredChapters.forEach {
 | 
			
		||||
            it.status = Download.NOT_DOWNLOADED
 | 
			
		||||
            it.download = null
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -84,6 +84,11 @@ class SettingsDownloadController : SettingsController() {
 | 
			
		||||
                defaultValue = "-1"
 | 
			
		||||
                summary = "%s"
 | 
			
		||||
            }
 | 
			
		||||
            switchPreference {
 | 
			
		||||
                key = Keys.removeBookmarkedChapters
 | 
			
		||||
                titleRes = R.string.pref_remove_bookmarked_chapters
 | 
			
		||||
                defaultValue = false
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val dbCategories = db.getCategories().executeAsBlocking()
 | 
			
		||||
 
 | 
			
		||||
@@ -314,6 +314,7 @@
 | 
			
		||||
    <string name="pref_category_delete_chapters">Delete chapters</string>
 | 
			
		||||
    <string name="pref_remove_after_marked_as_read">After manually marked as read</string>
 | 
			
		||||
    <string name="pref_remove_after_read">After reading</string>
 | 
			
		||||
    <string name="pref_remove_bookmarked_chapters">Delete bookmarked chapters</string>
 | 
			
		||||
    <string name="custom_dir">Custom location</string>
 | 
			
		||||
    <string name="disabled">Disabled</string>
 | 
			
		||||
    <string name="last_read_chapter">Last read chapter</string>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user