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() .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() fun deleteMangas() = db.delete()
.byQuery( .byQuery(
DeleteQuery.builder() DeleteQuery.builder()

View File

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