Allow searching by title for lewd galleries with missing metadata
This commit is contained in:
parent
55a3b2f3a1
commit
28d43bbecc
@ -11,6 +11,7 @@ import eu.kanade.tachiyomi.data.database.tables.CategoryTable
|
||||
import eu.kanade.tachiyomi.data.database.tables.ChapterTable
|
||||
import eu.kanade.tachiyomi.data.database.tables.MangaCategoryTable
|
||||
import eu.kanade.tachiyomi.data.database.tables.MangaTable
|
||||
import exh.metadata.sql.tables.SearchMetadataTable
|
||||
|
||||
interface MangaQueries : DbProvider {
|
||||
|
||||
@ -110,4 +111,16 @@ interface MangaQueries : DbProvider {
|
||||
|
||||
fun getTotalChapterManga() = db.get().listOfObjects(Manga::class.java)
|
||||
.withQuery(RawQuery.builder().query(getTotalChapterMangaQuery()).observesTables(MangaTable.TABLE).build()).prepare();
|
||||
|
||||
fun getMangaWithMetadata() = db.get()
|
||||
.listOfObjects(Manga::class.java)
|
||||
.withQuery(RawQuery.builder()
|
||||
.query("""
|
||||
SELECT ${MangaTable.TABLE}.* FROM ${MangaTable.TABLE}
|
||||
INNER JOIN ${SearchMetadataTable.TABLE}
|
||||
ON ${MangaTable.TABLE}.${MangaTable.COL_ID} = ${SearchMetadataTable.TABLE}.${SearchMetadataTable.COL_MANGA_ID}
|
||||
ORDER BY ${MangaTable.TABLE}.${MangaTable.COL_ID}
|
||||
""".trimIndent())
|
||||
.build())
|
||||
.prepare()
|
||||
}
|
||||
|
@ -78,6 +78,8 @@ class LibraryCategoryAdapter(val view: LibraryCategoryView) :
|
||||
.args(*sqlQuery.second.toTypedArray())
|
||||
.build())
|
||||
|
||||
val mangaWithMetadata = db.getMangaWithMetadata().executeAsBlocking()
|
||||
|
||||
ensureActive() // Fail early when cancelled
|
||||
|
||||
val convertedResult = LongArray(queryResult.count)
|
||||
@ -97,7 +99,14 @@ class LibraryCategoryAdapter(val view: LibraryCategoryView) :
|
||||
// Flow the mangas to allow cancellation of this filter operation
|
||||
mangas.asFlow().cancellable().filter { item ->
|
||||
if(isLewdSource(item.manga.source)) {
|
||||
convertedResult.binarySearch(item.manga.id ?: -1) >= 0
|
||||
val mangaId = item.manga.id ?: -1
|
||||
if(convertedResult.binarySearch(mangaId) < 0) {
|
||||
// Check if this manga even has metadata
|
||||
if(mangaWithMetadata.binarySearchBy(mangaId) { it.id } < 0) {
|
||||
// No meta? Filter using title
|
||||
item.filter(savedSearchText)
|
||||
} else false
|
||||
} else true
|
||||
} else {
|
||||
item.filter(savedSearchText)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user