mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Add option to backup read manga not in library (#1383)
This commit is contained in:
parent
4192818ba0
commit
e897d5628f
7 changed files with 37 additions and 2 deletions
|
@ -58,6 +58,9 @@ abstract class AbstractBackupManager(protected val context: Context) {
|
||||||
protected fun getFavoriteManga(): List<Manga> =
|
protected fun getFavoriteManga(): List<Manga> =
|
||||||
db.getFavoriteMangas().executeAsBlocking()
|
db.getFavoriteMangas().executeAsBlocking()
|
||||||
|
|
||||||
|
protected fun getReadManga(): List<Manga> =
|
||||||
|
db.getReadNotInLibraryMangas().executeAsBlocking()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inserts manga and returns id
|
* Inserts manga and returns id
|
||||||
*
|
*
|
||||||
|
|
|
@ -18,5 +18,7 @@ object BackupConst {
|
||||||
internal const val BACKUP_TRACK_MASK = 0x8
|
internal const val BACKUP_TRACK_MASK = 0x8
|
||||||
internal const val BACKUP_CUSTOM_INFO = 0x10
|
internal const val BACKUP_CUSTOM_INFO = 0x10
|
||||||
internal const val BACKUP_CUSTOM_INFO_MASK = 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
|
internal const val BACKUP_ALL = 0x1F
|
||||||
}
|
}
|
||||||
|
|
|
@ -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_CUSTOM_INFO_MASK
|
||||||
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_HISTORY
|
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_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
|
||||||
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_TRACK_MASK
|
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_TRACK_MASK
|
||||||
import eu.kanade.tachiyomi.data.backup.models.Backup
|
import eu.kanade.tachiyomi.data.backup.models.Backup
|
||||||
|
@ -51,7 +53,11 @@ class BackupManager(context: Context) : AbstractBackupManager(context) {
|
||||||
var backup: Backup? = null
|
var backup: Backup? = null
|
||||||
|
|
||||||
db.inTransaction {
|
db.inTransaction {
|
||||||
val databaseManga = getFavoriteManga()
|
val databaseManga = getFavoriteManga() + if (flags and BACKUP_READ_MANGA_MASK == BACKUP_READ_MANGA) {
|
||||||
|
getReadManga()
|
||||||
|
} else {
|
||||||
|
emptyList()
|
||||||
|
}
|
||||||
|
|
||||||
backup = Backup(
|
backup = Backup(
|
||||||
backupMangas(databaseManga, flags),
|
backupMangas(databaseManga, flags),
|
||||||
|
|
|
@ -191,6 +191,15 @@ interface MangaQueries : DbProvider {
|
||||||
)
|
)
|
||||||
.prepare()
|
.prepare()
|
||||||
|
|
||||||
|
fun getReadNotInLibraryMangas() = db.get()
|
||||||
|
.listOfObjects(Manga::class.java)
|
||||||
|
.withQuery(
|
||||||
|
RawQuery.builder()
|
||||||
|
.query(getReadMangaNotInLibraryQuery())
|
||||||
|
.build(),
|
||||||
|
)
|
||||||
|
.prepare()
|
||||||
|
|
||||||
fun getLastReadManga() = db.get()
|
fun getLastReadManga() = db.get()
|
||||||
.listOfObjects(Manga::class.java)
|
.listOfObjects(Manga::class.java)
|
||||||
.withQuery(
|
.withQuery(
|
||||||
|
|
|
@ -319,3 +319,15 @@ fun getSourceIdsWithNonLibraryMangaQuery() =
|
||||||
WHERE ${Manga.COL_FAVORITE} = 0
|
WHERE ${Manga.COL_FAVORITE} = 0
|
||||||
GROUP BY ${Manga.COL_SOURCE}
|
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
|
||||||
|
)
|
||||||
|
"""
|
|
@ -218,6 +218,7 @@ class SettingsBackupController : SettingsController() {
|
||||||
R.string.tracking,
|
R.string.tracking,
|
||||||
R.string.history,
|
R.string.history,
|
||||||
R.string.custom_manga_info,
|
R.string.custom_manga_info,
|
||||||
|
R.string.all_read_manga,
|
||||||
)
|
)
|
||||||
.map { activity.getString(it) }
|
.map { activity.getString(it) }
|
||||||
|
|
||||||
|
@ -225,7 +226,7 @@ class SettingsBackupController : SettingsController() {
|
||||||
.setTitle(R.string.what_should_backup)
|
.setTitle(R.string.what_should_backup)
|
||||||
.setMultiChoiceItems(
|
.setMultiChoiceItems(
|
||||||
options.toTypedArray(),
|
options.toTypedArray(),
|
||||||
booleanArrayOf(true, true, true, true, true, true),
|
options.map { true }.toBooleanArray(),
|
||||||
) { dialog, position, _ ->
|
) { dialog, position, _ ->
|
||||||
if (position == 0) {
|
if (position == 0) {
|
||||||
val listView = (dialog as AlertDialog).listView
|
val listView = (dialog as AlertDialog).listView
|
||||||
|
@ -243,6 +244,7 @@ class SettingsBackupController : SettingsController() {
|
||||||
3 -> flags = flags or BackupConst.BACKUP_TRACK
|
3 -> flags = flags or BackupConst.BACKUP_TRACK
|
||||||
4 -> flags = flags or BackupConst.BACKUP_HISTORY
|
4 -> flags = flags or BackupConst.BACKUP_HISTORY
|
||||||
5 -> flags = flags or BackupConst.BACKUP_CUSTOM_INFO
|
5 -> flags = flags or BackupConst.BACKUP_CUSTOM_INFO
|
||||||
|
6 -> flags = flags or BackupConst.BACKUP_READ_MANGA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -564,6 +564,7 @@
|
||||||
<string name="error_saving_cover">Error saving cover</string>
|
<string name="error_saving_cover">Error saving cover</string>
|
||||||
<string name="error_sharing_cover">Error sharing cover</string>
|
<string name="error_sharing_cover">Error sharing cover</string>
|
||||||
<string name="custom_manga_info">Custom manga info</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="set_as_default">Set as default</string>
|
||||||
<string name="filter_groups">Filter scanlator groups</string>
|
<string name="filter_groups">Filter scanlator groups</string>
|
||||||
<plurals name="deleted_chapters">
|
<plurals name="deleted_chapters">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue