Repository navigation
feat(onboarding): restrict display name to ASCII letters, digits and spaces - #1641
Merged
Merged
Conversation
…spaces Onboarding now requires the trimmed name to be 1-64 characters of A-Z, a-z, 0-9 or U+0020. MyAccount and TipCardSetup keep the non-blank rule.
Kotlin trim() strips only chars <= U+0020, so a trailing NBSP or ideographic space failed validation on Android but passed on iOS. Trim U+0009-U+000D, U+0085 and categories Zs/Zl/Zp on both ends, and submit the trimmed name for Onboarding instead of the raw field text.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
During onboarding, the display name is now accepted only if, after trimming, it is 1–64 characters of
A-Z,a-z,0-9or a space (U+0020). Any other name keeps Next disabled, the same way a blank name does today. My Account and tip-card setup still only require a non-blank name.OnboardingDisplayNameRule.ktholds the rule as a pure function with no Android types.NameEntryViewModel.State.isSubmittable(source)applies it forDisplayNameSource.Onboardingonly, andNameEntryScreengates Next on it..whitespacesAndNewlines. Kotlintrim()misses NBSP, so"Taylor\u00A0"would have been rejected here and accepted on iOS.setDisplayName, as iOS does. Before, every source sent the raw field text. My Account and tip-card setup still send it as typed.ConfirmNameChangewithout going through the button'senabledcheck. For Onboarding, the view model now drops an invalid name there too. iOSOnboardingNameViewModel.submit()already guards on its validator in the same way.iOS applies the same rule in code-payments/code-ios-app#933.
OnboardingDisplayNameRuleTestcovers accepted, trimmed and double-space names; rejected accents, punctuation, emoji, tab, newline, NBSP, all-space and 65-character names; the 64-character boundary; and non-ASCII names staying valid for the other two sources.