mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Add option to keep read manga in Clear Database (#1382)
This commit is contained in:
parent
0f54058aee
commit
4192818ba0
4 changed files with 33 additions and 6 deletions
|
@ -167,6 +167,22 @@ interface MangaQueries : DbProvider {
|
|||
)
|
||||
.prepare()
|
||||
|
||||
fun deleteMangasNotInLibraryAndNotReadBySourceIds(sourceIds: List<Long>) = db.delete()
|
||||
.byQuery(
|
||||
DeleteQuery.builder()
|
||||
.table(MangaTable.TABLE)
|
||||
.where(
|
||||
"""
|
||||
${MangaTable.COL_FAVORITE} = ? AND ${MangaTable.COL_SOURCE} IN (${Queries.placeholders(sourceIds.size)}) AND ${MangaTable.COL_ID} NOT IN (
|
||||
SELECT ${ChapterTable.COL_MANGA_ID} FROM ${ChapterTable.TABLE} WHERE ${ChapterTable.COL_READ} = 1 OR ${ChapterTable.COL_LAST_PAGE_READ} != 0
|
||||
)
|
||||
""".trimIndent(),
|
||||
)
|
||||
.whereArgs(0, *sourceIds.toTypedArray())
|
||||
.build(),
|
||||
)
|
||||
.prepare()
|
||||
|
||||
fun deleteMangas() = db.delete()
|
||||
.byQuery(
|
||||
DeleteQuery.builder()
|
||||
|
|
|
@ -27,6 +27,7 @@ import eu.kanade.tachiyomi.ui.base.controller.BaseCoroutineController
|
|||
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
||||
import eu.kanade.tachiyomi.util.system.materialAlertDialog
|
||||
import eu.kanade.tachiyomi.util.system.rootWindowInsetsCompat
|
||||
import eu.kanade.tachiyomi.util.system.setCustomTitleAndMessage
|
||||
import eu.kanade.tachiyomi.util.view.activityBinding
|
||||
import eu.kanade.tachiyomi.util.view.fullAppBarHeight
|
||||
import eu.kanade.tachiyomi.util.view.scrollViewWith
|
||||
|
@ -229,10 +230,15 @@ class ClearDatabaseController :
|
|||
|
||||
class ClearDatabaseSourcesDialog : DialogController() {
|
||||
override fun onCreateDialog(savedViewState: Bundle?): Dialog {
|
||||
val item = arrayOf(activity!!.getString(R.string.clear_db_exclude_read))
|
||||
val selected = booleanArrayOf(true)
|
||||
return activity!!.materialAlertDialog()
|
||||
.setMessage(R.string.clear_database_confirmation)
|
||||
.setCustomTitleAndMessage(0, activity!!.getString(R.string.clear_database_confirmation))
|
||||
.setMultiChoiceItems(item, selected) { _, which, checked ->
|
||||
selected[which] = checked
|
||||
}
|
||||
.setPositiveButton(android.R.string.ok) { _, _ ->
|
||||
(targetController as? ClearDatabaseController)?.clearDatabaseForSelectedSources()
|
||||
(targetController as? ClearDatabaseController)?.clearDatabaseForSelectedSources(selected.last())
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.create()
|
||||
|
@ -240,12 +246,12 @@ class ClearDatabaseController :
|
|||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
private fun clearDatabaseForSelectedSources() {
|
||||
private fun clearDatabaseForSelectedSources(keepReadManga: Boolean) {
|
||||
val adapter = adapter ?: return
|
||||
val selectedSourceIds = adapter.selectedPositions.mapNotNull { position ->
|
||||
adapter.getItem(position)?.source?.id
|
||||
}
|
||||
presenter.clearDatabaseForSourceIds(selectedSourceIds)
|
||||
presenter.clearDatabaseForSourceIds(selectedSourceIds, keepReadManga)
|
||||
binding.fab.isVisible = false
|
||||
adapter.clearSelection()
|
||||
adapter.notifyDataSetChanged()
|
||||
|
|
|
@ -29,8 +29,12 @@ class ClearDatabasePresenter : BaseCoroutinePresenter<ClearDatabaseController>()
|
|||
getDatabaseSources()
|
||||
}
|
||||
|
||||
fun clearDatabaseForSourceIds(sources: List<Long>) {
|
||||
fun clearDatabaseForSourceIds(sources: List<Long>, keepReadManga: Boolean) {
|
||||
if (keepReadManga) {
|
||||
db.deleteMangasNotInLibraryAndNotReadBySourceIds(sources).executeAsBlocking()
|
||||
} else {
|
||||
db.deleteMangasNotInLibraryBySourceIds(sources).executeAsBlocking()
|
||||
}
|
||||
db.deleteHistoryNoLastRead().executeAsBlocking()
|
||||
getDatabaseSources()
|
||||
}
|
||||
|
|
|
@ -831,6 +831,7 @@
|
|||
<string name="clear_database_source_item_count">%1$d non-library manga in database</string>
|
||||
<string name="clear_database_summary">Delete manga and chapters that are not in your library</string>
|
||||
<string name="clear_database_confirmation">Are you sure? Read chapters and progress of non-library manga will be lost</string>
|
||||
<string name="clear_db_exclude_read">Keep manga with read chapters</string>
|
||||
<string name="clear_database_completed">Entries deleted</string>
|
||||
<string name="database_clean">Database clean</string>
|
||||
<string name="refresh_library_metadata">Refresh library metadata</string>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue