From 0bd7f0cc6fbea588c400a3bdd667b02b1da10ff7 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 24 Apr 2026 08:55:16 -0300 Subject: [PATCH] Also search in category descriptions this is currently limited to the current locale, so requires translations to exist for that. --- app/src/main/kotlin/org/fdroid/search/SearchManager.kt | 10 ++++++++-- .../kotlin/org/fdroid/ui/categories/CategoryItem.kt | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/org/fdroid/search/SearchManager.kt b/app/src/main/kotlin/org/fdroid/search/SearchManager.kt index 123f90873..862bc0bed 100644 --- a/app/src/main/kotlin/org/fdroid/search/SearchManager.kt +++ b/app/src/main/kotlin/org/fdroid/search/SearchManager.kt @@ -58,7 +58,11 @@ constructor( db.getRepositoryDao().getLiveCategories().asFlow().map { categories -> categories .map { category -> - CategoryItem(id = category.id, name = category.getName(localeList) ?: "Unknown Category") + CategoryItem( + id = category.id, + name = category.getName(localeList) ?: "Unknown Category", + description = category.getDescription(localeList), + ) } .sortedWith { c1, c2 -> collator.compare(c1.name, c2.name) } } @@ -113,7 +117,9 @@ constructor( val timedCategories = measureTimedValue { categories.first().filter { // normalization removed diacritics, so searches without them work - it.name.normalize().contains(sanitized.normalize(), ignoreCase = true) + val normalized = sanitized.normalize() + it.name.normalize().contains(normalized, ignoreCase = true) || + (it.description?.normalize()?.contains(normalized, ignoreCase = true) ?: false) } } _searchResults.value = SearchResults(timedApps.value, timedCategories.value) diff --git a/app/src/main/kotlin/org/fdroid/ui/categories/CategoryItem.kt b/app/src/main/kotlin/org/fdroid/ui/categories/CategoryItem.kt index 2d593ff45..2b4b2bbd3 100644 --- a/app/src/main/kotlin/org/fdroid/ui/categories/CategoryItem.kt +++ b/app/src/main/kotlin/org/fdroid/ui/categories/CategoryItem.kt @@ -74,7 +74,7 @@ import androidx.compose.material.icons.filled.Wallpaper import androidx.compose.material.icons.filled.WbSunny import androidx.compose.ui.graphics.vector.ImageVector -data class CategoryItem(val id: String, val name: String) { +data class CategoryItem(val id: String, val name: String, val description: String? = null) { val imageVector: ImageVector get() = when (id) {