From e6f5ea172a88db51ae5a9771b0d359e0adee22ef Mon Sep 17 00:00:00 2001 From: she11sh0cked Date: Thu, 14 May 2020 02:35:01 +0200 Subject: [PATCH] Filter tracker status (#2) * Implement library filter for tracker status Co-authored-by: she11sh0cked --- .../kanade/tachiyomi/ui/library/LibraryItem.kt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt index 35c0c84a8..63154da38 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt @@ -11,7 +11,10 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import eu.davidea.flexibleadapter.items.IFilterable import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.LibraryManga +import eu.kanade.tachiyomi.data.database.models.Track +import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.widget.AutofitRecyclerView import kotlinx.android.synthetic.main.source_grid_item.view.card @@ -23,6 +26,8 @@ class LibraryItem(val manga: LibraryManga, private val libraryAsList: Preference AbstractFlexibleItem(), IFilterable { private val sourceManager: SourceManager = Injekt.get() + private val trackManager: TrackManager = Injekt.get() + private val db: DatabaseHelper = Injekt.get() var downloadCount = -1 var unreadCount = -1 @@ -81,6 +86,7 @@ class LibraryItem(val manga: LibraryManga, private val libraryAsList: Preference (manga.author?.contains(constraint, true) ?: false) || (manga.artist?.contains(constraint, true) ?: false) || sourceManager.getOrStub(manga.source).name.contains(constraint, true) || + filterTracks(constraint, db.getTracks(manga).executeAsBlocking()) || if (constraint.contains(" ") || constraint.contains("\"")) { val genres = manga.genre?.split(", ")?.map { it.drop(it.indexOfFirst { it == ':' } + 1).toLowerCase().trim() // tachiEH tag namespaces @@ -109,6 +115,17 @@ class LibraryItem(val manga: LibraryManga, private val libraryAsList: Preference ) } + private fun filterTracks(constraint: String, tracks: List): Boolean { + return tracks.any { + val trackService = trackManager.getService(it.sync_id) + if (trackService != null) { + val status = trackService.getStatus(it.status) + return@any status.contains(constraint, true) + } + return@any false + } + } + private fun containsGenre(tag: String, genres: List?): Boolean { return if (tag.startsWith("-")) { genres?.find {