diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactsScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactsScreen.kt index 47f2d0b6..aa12d6d0 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactsScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactsScreen.kt @@ -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) } } } diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt index cd6dce93..2f4d1ceb 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt @@ -1357,6 +1357,7 @@ private fun CallUriRow( } } } + @Composable private fun CallTimer( initialDurationSeconds: Long, diff --git a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt index 26547797..23671162 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt @@ -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) }