Clear db now has a option to keep read manga

This commit is contained in:
Jobobby04 2021-02-26 21:06:13 -05:00
parent 3601968342
commit d0561705fe
3 changed files with 42 additions and 3 deletions

View File

@ -169,6 +169,26 @@ interface MangaQueries : DbProvider {
)
.prepare()
// SY -->
fun deleteMangasNotInLibraryAndNotRead() = db.delete()
.byQuery(
DeleteQuery.builder()
.table(MangaTable.TABLE)
.where(
"""
${MangaTable.COL_FAVORITE} = ? AND ${MangaTable.COL_ID} NOT IN (
SELECT ${MergedTable.COL_MANGA_ID} FROM ${MergedTable.TABLE} WHERE ${MergedTable.COL_MANGA_ID} != ${MergedTable.COL_MERGE_ID}
) 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)
.build()
)
.prepare()
// SY <--
fun deleteMangas() = db.delete()
.byQuery(
DeleteQuery.builder()

View File

@ -12,6 +12,7 @@ import androidx.core.net.toUri
import androidx.core.text.HtmlCompat
import androidx.preference.PreferenceScreen
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.checkbox.checkBoxPrompt
import com.afollestad.materialdialogs.list.listItemsMultiChoice
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.cache.ChapterCache
@ -413,11 +414,20 @@ class SettingsAdvancedController : SettingsController() {
}
class ClearDatabaseDialogController : DialogController() {
// SY -->
var keepReadManga = false
// SY <--
override fun onCreateDialog(savedViewState: Bundle?): Dialog {
return MaterialDialog(activity!!)
.message(R.string.clear_database_confirmation)
// SY -->
.checkBoxPrompt(R.string.clear_db_exclude_read) {
keepReadManga = it
}
// SY <--
.positiveButton(android.R.string.ok) {
(targetController as? SettingsAdvancedController)?.clearDatabase()
(targetController as? SettingsAdvancedController)?.clearDatabase(/* SY --> */keepReadManga/* SY <-- */)
}
.negativeButton(android.R.string.cancel)
}
@ -439,8 +449,14 @@ class SettingsAdvancedController : SettingsController() {
activity?.toast(R.string.clear_history_completed)
}
private fun clearDatabase() {
db.deleteMangasNotInLibrary().executeAsBlocking()
private fun clearDatabase(keepReadManga: Boolean) {
// SY -->
if (keepReadManga) {
db.deleteMangasNotInLibraryAndNotRead().executeAsBlocking()
} else {
db.deleteMangasNotInLibrary().executeAsBlocking()
}
// SY <--
db.deleteHistoryNoLastRead().executeAsBlocking()
activity?.toast(R.string.clear_database_completed)
}
@ -448,6 +464,8 @@ class SettingsAdvancedController : SettingsController() {
private companion object {
const val CLEAR_CACHE_KEY = "pref_clear_cache_key"
// SY -->
private var job: Job? = null
// SY <--
}
}

View File

@ -152,6 +152,7 @@
<string name="data_saver_server">Bandwidth Hero Proxy Server</string>
<string name="data_saver_server_summary">Put Bandwidth Hero Proxy server url here</string>
<string name="update_monthly">Monthly</string>
<string name="clear_db_exclude_read">Keep manga with read chapters</string>
<!-- Log Level -->
<string name="log_minimal">Minimal</string>