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