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
This commit is contained in:
Semen 2023-07-07 16:57:02 +03:00 committed by Jobobby04
parent eade3c372c
commit 5a8f583c08
5 changed files with 24 additions and 1 deletions

View File

@ -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
}
}

View File

@ -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)
}

View File

@ -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(

View File

@ -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" />
<CheckBox
android:id="@+id/mig_delete_downloaded"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/delete_downloaded" />
</androidx.constraintlayout.widget.ConstraintLayout>
<View

View File

@ -12,6 +12,7 @@
<string name="manga">Library entries</string>
<string name="chapters">Chapters</string>
<string name="track">Tracking</string>
<string name="delete_downloaded">Delete downloaded</string>
<string name="history">History</string>
<!-- Screen titles -->