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 73f621ffe6..72dbe33e37 100644 --- 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 @@ -15,17 +15,17 @@ val libraryQuery = """ SELECT M.*, COALESCE(MC.${MangaCategory.COL_CATEGORY_ID}, 0) AS ${Manga.COL_CATEGORY} FROM ( - SELECT ${Manga.TABLE}.*, COALESCE(C.unread, 0) AS ${Manga.COL_UNREAD}, COALESCE(R.hasread, 0) AS ${Manga.COL_HAS_READ}, COALESCE(B.bookmarkCount, 0) AS ${Manga.COL_BOOKMARK_COUNT} + SELECT ${Manga.TABLE}.*, COALESCE(C.unread, '') AS ${Manga.COL_UNREAD}, COALESCE(R.hasread, '') AS ${Manga.COL_HAS_READ}, COALESCE(B.bookmarkCount, 0) AS ${Manga.COL_BOOKMARK_COUNT} FROM ${Manga.TABLE} LEFT JOIN ( - SELECT ${Chapter.COL_MANGA_ID}, COUNT(*) AS unread + SELECT ${Chapter.COL_MANGA_ID}, GROUP_CONCAT(IFNULL(${Chapter.TABLE}.${Chapter.COL_SCANLATOR}, "N/A"), " [.] ") AS unread FROM ${Chapter.TABLE} WHERE ${Chapter.COL_READ} = 0 GROUP BY ${Chapter.COL_MANGA_ID} ) AS C ON ${Manga.COL_ID} = C.${Chapter.COL_MANGA_ID} LEFT JOIN ( - SELECT ${Chapter.COL_MANGA_ID}, COUNT(*) AS hasread + SELECT ${Chapter.COL_MANGA_ID}, GROUP_CONCAT(IFNULL(${Chapter.TABLE}.${Chapter.COL_SCANLATOR}, "N/A"), " [.] ") AS hasread FROM ${Chapter.TABLE} WHERE ${Chapter.COL_READ} = 1 GROUP BY ${Chapter.COL_MANGA_ID} diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/LibraryMangaGetResolver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/LibraryMangaGetResolver.kt index 4a99cbe4de..7e561bd385 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/LibraryMangaGetResolver.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/LibraryMangaGetResolver.kt @@ -5,6 +5,7 @@ import com.pushtorefresh.storio.sqlite.operations.get.DefaultGetResolver import eu.kanade.tachiyomi.data.database.mappers.BaseMangaGetResolver import eu.kanade.tachiyomi.data.database.models.LibraryManga import eu.kanade.tachiyomi.data.database.tables.MangaTable +import eu.kanade.tachiyomi.util.chapter.ChapterUtil class LibraryMangaGetResolver : DefaultGetResolver(), BaseMangaGetResolver { @@ -16,11 +17,22 @@ class LibraryMangaGetResolver : DefaultGetResolver(), BaseMangaGet val manga = LibraryManga() mapBaseFromCursor(manga, cursor) - manga.unread = cursor.getInt(cursor.getColumnIndex(MangaTable.COL_UNREAD)) + manga.unread = cursor.getString(cursor.getColumnIndex(MangaTable.COL_UNREAD)) + .filterChaptersByScanlators(manga) manga.category = cursor.getInt(cursor.getColumnIndex(MangaTable.COL_CATEGORY)) - manga.read = cursor.getInt(cursor.getColumnIndex(MangaTable.COL_HAS_READ)) + manga.read = cursor.getString(cursor.getColumnIndex(MangaTable.COL_HAS_READ)) + .filterChaptersByScanlators(manga) manga.bookmarkCount = cursor.getInt(cursor.getColumnIndex(MangaTable.COL_BOOKMARK_COUNT)) return manga } + + private fun String.filterChaptersByScanlators(manga: LibraryManga): Int { + if (isEmpty()) return 0 + val list = split(" [.] ") + return manga.filtered_scanlators?.let { filteredScanlatorString -> + val filteredScanlators = ChapterUtil.getScanlators(filteredScanlatorString) + list.count { ChapterUtil.getScanlators(it).none { group -> filteredScanlators.contains(group) } } + } ?: list.size + } }