In contact search, ignore diacritic characters

This commit is contained in:
Juha Heinanen
2026-01-17 04:55:33 +02:00
parent 458b8a4459
commit 3f7a60cb27
3 changed files with 10 additions and 3 deletions

View File

@ -240,11 +240,12 @@ private fun ContactsContent(
}
val filteredContacts = remember(BaresipService.contacts, searchQuery) {
if (searchQuery.isBlank()) {
if (searchQuery.isBlank())
BaresipService.contacts
} else {
else {
val normalizedQuery = Utils.unaccent(searchQuery)
BaresipService.contacts.filter { contact ->
contact.name().contains(searchQuery, ignoreCase = true)
Utils.unaccent(contact.name()).contains(normalizedQuery, ignoreCase = true)
}
}
}

View File

@ -1357,6 +1357,7 @@ private fun CallUriRow(
}
}
}
@Composable
private fun CallTimer(
initialDurationSeconds: Long,

View File

@ -419,6 +419,11 @@ object Utils {
return res
}
fun unaccent(input: String): String {
val normalized = java.text.Normalizer.normalize(input, java.text.Normalizer.Form.NFD)
return "\\p{InCombiningDiacriticalMarks}+".toRegex().replace(normalized, "")
}
fun isVisible(): Boolean {
return ProcessLifecycleOwner.get().lifecycle.currentState.isAtLeast(Lifecycle.State.STARTED)
}