diff --git a/app/src/main/java/one/mixin/android/extension/StringExtension.kt b/app/src/main/java/one/mixin/android/extension/StringExtension.kt index 843ec52312..dbdd0d6ce3 100644 --- a/app/src/main/java/one/mixin/android/extension/StringExtension.kt +++ b/app/src/main/java/one/mixin/android/extension/StringExtension.kt @@ -848,12 +848,10 @@ fun BigDecimal.currencyFormat(): String { fun String?.isValidMao(): Boolean { if (this.isNullOrBlank()) return false - val text = this.lowercase() - val regex = Regex("^[^\\sA-Z]{1,128}\\.mao$") - if (!regex.matches(text)) return false - val name = text.removeSuffix(".mao") - if (name.isBlank() || name.all { it.isDigit() }) return false - return true + val text = this.trimEnd('.').lowercase() + if (text.all { it.isDigit() }) return false + val regex = Regex("^[^\\sA-Z]{1,128}$") + return regex.matches(text) } fun String.isMao(): Boolean { diff --git a/app/src/main/java/one/mixin/android/ui/search/SearchFragment.kt b/app/src/main/java/one/mixin/android/ui/search/SearchFragment.kt index 483c49aa6e..5fdf572f19 100644 --- a/app/src/main/java/one/mixin/android/ui/search/SearchFragment.kt +++ b/app/src/main/java/one/mixin/android/ui/search/SearchFragment.kt @@ -69,7 +69,7 @@ class SearchFragment : BaseFragment(R.layout.fragment_search) { companion object { const val TAG = "SearchFragment" - const val SEARCH_DEBOUNCE = 300L + const val SEARCH_DEBOUNCE = 500L } private var keyword: String? = null diff --git a/app/src/test/java/one/mixin/android/extension/StringExtensionTest.kt b/app/src/test/java/one/mixin/android/extension/StringExtensionTest.kt index 2eb3d753e8..751ca9ad85 100644 --- a/app/src/test/java/one/mixin/android/extension/StringExtensionTest.kt +++ b/app/src/test/java/one/mixin/android/extension/StringExtensionTest.kt @@ -142,6 +142,18 @@ class StringExtensionTest { assertEquals("", s2.filterNonAscii()) } + @Test + fun isValidMaoAllowsSearchBeforeMaoSuffix() { + assertTrue("alice".isValidMao()) + assertTrue("alice.".isValidMao()) + assertTrue("alice.mao".isValidMao()) + assertTrue("xin.mao".isValidMao()) + assertFalse("123".isValidMao()) + assertFalse("has space".isValidMao()) + assertFalse("".isValidMao()) + assertFalse(null.isValidMao()) + } + @Test fun maxLimit() { var str = diff --git a/app/src/test/java/one/mixin/android/ui/search/SearchFragmentTest.kt b/app/src/test/java/one/mixin/android/ui/search/SearchFragmentTest.kt new file mode 100644 index 0000000000..34029d28bd --- /dev/null +++ b/app/src/test/java/one/mixin/android/ui/search/SearchFragmentTest.kt @@ -0,0 +1,11 @@ +package one.mixin.android.ui.search + +import kotlin.test.Test +import kotlin.test.assertEquals + +class SearchFragmentTest { + @Test + fun searchDebounceIsHalfSecond() { + assertEquals(500L, SearchFragment.SEARCH_DEBOUNCE) + } +}