diff --git a/app/src/main/java/io/xxlabs/messenger/ui/intro/registration/username/UsernameRegistration.kt b/app/src/main/java/io/xxlabs/messenger/ui/intro/registration/username/UsernameRegistration.kt index d029f00f2e1eca695c6397b2f6037a46ca4bc697..dfc7dd9b7db233ab16d44519e03a6850c7ed7c62 100644 --- a/app/src/main/java/io/xxlabs/messenger/ui/intro/registration/username/UsernameRegistration.kt +++ b/app/src/main/java/io/xxlabs/messenger/ui/intro/registration/username/UsernameRegistration.kt @@ -113,12 +113,12 @@ class UsernameRegistration @AssistedInject constructor( override val usernameFilters: Array<InputFilter> = arrayOf( - InputFilter { source, start, end, _, _, _ -> - val input = source?.subSequence(start, end) - val filtered = source?.subSequence(start, end) - ?.replace(Regex(USERNAME_FILTER_REGEX), "") - if (filtered == input) null else filtered - }, +// InputFilter { source, start, end, _, _, _ -> +// val input = source?.subSequence(start, end) +// val filtered = source?.subSequence(start, end) +// ?.replace(Regex(USERNAME_FILTER_REGEX), "") +// if (filtered == input) null else filtered +// }, InputFilter.LengthFilter(MAX_USERNAME_LENGTH) ) @@ -179,17 +179,23 @@ class UsernameRegistration @AssistedInject constructor( this.equals(PLAY_STORE_DEMO_USERNAME, true) private fun String?.isValidUsername(): Boolean { - if (isNullOrEmpty() || !isMinimumLength()) { - minimumLengthError() - return false - } - - return if (this.matches(USERNAME_VALIDATION_REGEX.toRegex())) { - error.value = null - true - } else { - invalidUsernameError() - false + return when { + isNullOrEmpty() || !isMinimumLength() -> { + minimumLengthError() + false + } + matches(USERNAME_VALIDATION_REGEX.toRegex()) -> { + error.value = null + true + } + contains(Regex(USERNAME_FILTER_REGEX)) -> { + invalidCharsInUsernameError() + false + } + else -> { + invalidUsernameError() + false + } } } @@ -203,6 +209,12 @@ class UsernameRegistration @AssistedInject constructor( error.value = application.getString(R.string.registration_error_username_invalid) } + private fun invalidCharsInUsernameError() { + error.postValue( + application.getString(R.string.registration_error_username_invalid_chars) + ) + } + private fun registerUsername(username: String, isDemoAcct: Boolean = false) { if (!loggedIn) { getOrCreateSession() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7a8bab9d42bf236571ab91bf2b88acadba3759e3..b5f46db385e447afb198cd44025800fe8afc63f9 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -519,6 +519,7 @@ <string name="label_edit">Edit</string> <string name="notification_group_request_text">Group request received</string> <string name="registration_error_username_invalid">Username must start and end with an alphanumeric character.</string> + <string name="registration_error_username_invalid_chars">Username contains invalid characters.</string> <string name="settings_confirm_delete_button">Confirm Delete</string> <string name="settings_delete_account_confirm_username_hint">Username</string> <string name="settings_account_recovery_dialog_title">Please note</string>