Add Better Extension Search (#6359)

Add support to searching with source name, id and baseUrl for a extension's sources.
This commit is contained in:
FourTOne5
2021-12-19 01:46:45 +06:00
committed by GitHub
parent 2ed01af723
commit 9e83130bd8
3 changed files with 52 additions and 6 deletions

View File

@@ -15,6 +15,7 @@ import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.databinding.ExtensionControllerBinding
import eu.kanade.tachiyomi.extension.model.Extension
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
import eu.kanade.tachiyomi.ui.browse.BrowseController
@@ -56,7 +57,8 @@ open class ExtensionController :
return ExtensionPresenter()
}
override fun createBinding(inflater: LayoutInflater) = ExtensionControllerBinding.inflate(inflater)
override fun createBinding(inflater: LayoutInflater) =
ExtensionControllerBinding.inflate(inflater)
override fun onViewCreated(view: View) {
super.onViewCreated(view)
@@ -189,11 +191,27 @@ open class ExtensionController :
private fun updateExtensionsList() {
if (query.isNotBlank()) {
val extensionNames = query.split(",")
val queries = query.split(",")
adapter?.updateDataSet(
extensions.filter {
extensionNames.any { queriedName ->
it.extension.name.contains(queriedName, ignoreCase = true)
queries.any { query ->
when (it.extension) {
is Extension.Available -> {
it.extension.sources.any {
it.name.contains(query, ignoreCase = true) ||
it.baseUrl.contains(query, ignoreCase = true) ||
it.id == query.toLongOrNull()
} || it.extension.name.contains(query, ignoreCase = true)
}
is Extension.Installed -> {
it.extension.sources.any {
it.name.contains(query, ignoreCase = true) ||
it.id == query.toLongOrNull() ||
if (it is HttpSource) { it.baseUrl.contains(query, ignoreCase = true) } else false
} || it.extension.name.contains(query, ignoreCase = true)
}
is Extension.Untrusted -> it.extension.name.contains(query, ignoreCase = true)
}
}
}
)