Add option to backup read manga not in library (#1383)

This commit is contained in:
nzoba 2022-08-22 20:12:56 +02:00 committed by GitHub
parent 4192818ba0
commit e897d5628f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 37 additions and 2 deletions

View file

@ -58,6 +58,9 @@ abstract class AbstractBackupManager(protected val context: Context) {
protected fun getFavoriteManga(): List<Manga> =
db.getFavoriteMangas().executeAsBlocking()
protected fun getReadManga(): List<Manga> =
db.getReadNotInLibraryMangas().executeAsBlocking()
/**
* Inserts manga and returns id
*

View file

@ -18,5 +18,7 @@ object BackupConst {
internal const val BACKUP_TRACK_MASK = 0x8
internal const val BACKUP_CUSTOM_INFO = 0x10
internal const val BACKUP_CUSTOM_INFO_MASK = 0x10
internal const val BACKUP_READ_MANGA = 0x20
internal const val BACKUP_READ_MANGA_MASK = 0x20
internal const val BACKUP_ALL = 0x1F
}

View file

@ -12,6 +12,8 @@ import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_CUSTOM_INFO
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_CUSTOM_INFO_MASK
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_HISTORY
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_HISTORY_MASK
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_READ_MANGA
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_READ_MANGA_MASK
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_TRACK
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_TRACK_MASK
import eu.kanade.tachiyomi.data.backup.models.Backup
@ -51,7 +53,11 @@ class BackupManager(context: Context) : AbstractBackupManager(context) {
var backup: Backup? = null
db.inTransaction {
val databaseManga = getFavoriteManga()
val databaseManga = getFavoriteManga() + if (flags and BACKUP_READ_MANGA_MASK == BACKUP_READ_MANGA) {
getReadManga()
} else {
emptyList()
}
backup = Backup(
backupMangas(databaseManga, flags),

View file

@ -191,6 +191,15 @@ interface MangaQueries : DbProvider {
)
.prepare()
fun getReadNotInLibraryMangas() = db.get()
.listOfObjects(Manga::class.java)
.withQuery(
RawQuery.builder()
.query(getReadMangaNotInLibraryQuery())
.build(),
)
.prepare()
fun getLastReadManga() = db.get()
.listOfObjects(Manga::class.java)
.withQuery(

View file

@ -319,3 +319,15 @@ fun getSourceIdsWithNonLibraryMangaQuery() =
WHERE ${Manga.COL_FAVORITE} = 0
GROUP BY ${Manga.COL_SOURCE}
"""
/**
* Query to get manga that are not in library, but have read chapters
*/
fun getReadMangaNotInLibraryQuery() =
"""
SELECT ${Manga.TABLE}.*
FROM ${Manga.TABLE}
WHERE ${Manga.COL_FAVORITE} = 0 AND ${Manga.COL_ID} IN(
SELECT ${Chapter.TABLE}.${Chapter.COL_MANGA_ID} FROM ${Chapter.TABLE} WHERE ${Chapter.COL_READ} = 1 OR ${Chapter.COL_LAST_PAGE_READ} != 0
)
"""

View file

@ -218,6 +218,7 @@ class SettingsBackupController : SettingsController() {
R.string.tracking,
R.string.history,
R.string.custom_manga_info,
R.string.all_read_manga,
)
.map { activity.getString(it) }
@ -225,7 +226,7 @@ class SettingsBackupController : SettingsController() {
.setTitle(R.string.what_should_backup)
.setMultiChoiceItems(
options.toTypedArray(),
booleanArrayOf(true, true, true, true, true, true),
options.map { true }.toBooleanArray(),
) { dialog, position, _ ->
if (position == 0) {
val listView = (dialog as AlertDialog).listView
@ -243,6 +244,7 @@ class SettingsBackupController : SettingsController() {
3 -> flags = flags or BackupConst.BACKUP_TRACK
4 -> flags = flags or BackupConst.BACKUP_HISTORY
5 -> flags = flags or BackupConst.BACKUP_CUSTOM_INFO
6 -> flags = flags or BackupConst.BACKUP_READ_MANGA
}
}
}

View file

@ -564,6 +564,7 @@
<string name="error_saving_cover">Error saving cover</string>
<string name="error_sharing_cover">Error sharing cover</string>
<string name="custom_manga_info">Custom manga info</string>
<string name="all_read_manga">All read manga</string>
<string name="set_as_default">Set as default</string>
<string name="filter_groups">Filter scanlator groups</string>
<plurals name="deleted_chapters">