diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt index ac932259e..e47e002d9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt @@ -68,6 +68,9 @@ abstract class AbstractBackupManager(protected val context: Context) { databaseHelper.getFavoriteMangas().executeAsBlocking() // SY --> + protected fun getReadManga(): List = + databaseHelper.getReadNotInLibraryMangas().executeAsBlocking() + /** * Returns list containing merged manga that are possibly not in the library * diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt index 924c1cd48..63e5da4f3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt @@ -67,7 +67,7 @@ class FullBackupManager(context: Context) : AbstractBackupManager(context) { var backup: Backup? = null databaseHelper.inTransaction { - val databaseManga = getFavoriteManga() /* SY --> */ + getMergedManga().filterNot { it.source == MERGED_SOURCE_ID } /* SY <-- */ + val databaseManga = getFavoriteManga() /* SY --> */ + getReadManga() + getMergedManga().filterNot { it.source == MERGED_SOURCE_ID } /* SY <-- */ backup = Backup( backupManga(databaseManga, flags), diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt index 45d8b660f..d63826d18 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt @@ -79,6 +79,15 @@ interface MangaQueries : DbProvider { .prepare() // SY --> + fun getReadNotInLibraryMangas() = db.get() + .listOfObjects(Manga::class.java) + .withQuery( + RawQuery.builder() + .query(getReadMangaNotInLibraryQuery()) + .build() + ) + .prepare() + fun updateMangaInfo(manga: Manga) = db.put() .`object`(manga) .withPutResolver(MangaInfoPutResolver()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt index f0f344972..4f90f1495 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt @@ -61,6 +61,18 @@ fun getMergedChaptersQuery() = ON ${Chapter.TABLE}.${Chapter.COL_MANGA_ID} = M.${Merged.COL_MANGA_ID} """ +/** + * 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 + ) +""" + /** * Query to get the manga from the library, with their categories and unread count. */