From 5a8f583c085ae589884d9e0a4b8b8ed68b5274c4 Mon Sep 17 00:00:00 2001 From: Semen <55978818+semenvav@users.noreply.github.com> Date: Fri, 7 Jul 2023 16:57:02 +0300 Subject: [PATCH] Add function to delete downloaded chapters when migrating manga (#9621) add function to delete downloaded chapters when migrating manga and getFlagsFromPositions fix (cherry picked from commit 4882896f4d65acabb82771699906b797b3de7662) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt --- .../tachiyomi/ui/browse/migration/MigrationFlags.kt | 5 +++++ .../advanced/design/MigrationBottomSheetDialog.kt | 1 + .../advanced/process/MigrationListScreenModel.kt | 9 +++++++++ app/src/main/res/layout/migration_bottom_sheet.xml | 9 ++++++++- i18n/src/main/res/values/strings.xml | 1 + 5 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt index 3ec11ffde..f19ed1040 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt @@ -7,6 +7,7 @@ object MigrationFlags { const val TRACK = 0b00100 const val CUSTOM_COVER = 0b01000 const val EXTRA = 0b10000 + const val DELETE_CHAPTERS = 0b100000 fun hasChapters(value: Int): Boolean { return value and CHAPTERS != 0 @@ -27,4 +28,8 @@ object MigrationFlags { fun hasExtra(value: Int): Boolean { return value and EXTRA != 0 } + + fun hasDeleteChapters(value: Int): Boolean { + return value and DELETE_CHAPTERS != 0 + } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt index 5fe4c08f3..8e5323840 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt @@ -100,6 +100,7 @@ class MigrationBottomSheetDialog(private val baseContext: Context, private val l if (binding.migTracking.isChecked) flags = flags or MigrationFlags.TRACK if (binding.migCustomCover.isChecked) flags = flags or MigrationFlags.CUSTOM_COVER if (binding.migExtra.isChecked) flags = flags or MigrationFlags.EXTRA + if (binding.migDeleteDownloaded.isChecked) flags = flags or MigrationFlags.DELETE_CHAPTERS preferences.migrateFlags().set(flags) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt index cdebb1910..b51c91ec8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt @@ -10,6 +10,7 @@ import eu.kanade.domain.manga.model.hasCustomCover import eu.kanade.domain.manga.model.toSManga import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.cache.CoverCache +import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.getNameForMangaInfo import eu.kanade.tachiyomi.source.online.all.EHentai @@ -62,6 +63,7 @@ class MigrationListScreenModel( private val config: MigrationProcedureConfig, private val preferences: UnsortedPreferences = Injekt.get(), private val sourceManager: SourceManager = Injekt.get(), + private val downloadManager: DownloadManager = Injekt.get(), private val coverCache: CoverCache = Injekt.get(), private val getManga: GetManga = Injekt.get(), private val networkToLocalManga: NetworkToLocalManga = Injekt.get(), @@ -375,6 +377,13 @@ class MigrationListScreenModel( viewerFlags = prevManga.viewerFlags, ) } + // Delete downloaded + if (MigrationFlags.hasDeleteChapters(flags)) { + val oldSource = sourceManager.get(prevManga.source) + if (oldSource != null) { + downloadManager.deleteManga(prevManga, oldSource) + } + } // Update favorite status if (replace) { prevMangaUpdate = MangaUpdate( diff --git a/app/src/main/res/layout/migration_bottom_sheet.xml b/app/src/main/res/layout/migration_bottom_sheet.xml index 76d657339..ef210131f 100644 --- a/app/src/main/res/layout/migration_bottom_sheet.xml +++ b/app/src/main/res/layout/migration_bottom_sheet.xml @@ -43,7 +43,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="horizontal" - app:constraint_referenced_ids="mig_chapters,mig_categories,mig_tracking,mig_custom_cover,mig_extra" + app:constraint_referenced_ids="mig_chapters,mig_categories,mig_tracking,mig_custom_cover,mig_extra,mig_delete_downloaded" app:flow_horizontalBias="0" app:flow_horizontalGap="8dp" app:flow_horizontalStyle="packed" @@ -87,6 +87,13 @@ android:layout_height="wrap_content" android:checked="true" android:text="@string/log_extra" /> + + Library entries Chapters Tracking + Delete downloaded History