Name change: better unicode handling (#3164)

* Name change: better unicode handling

Client-side:

* Changes the NameChangeModal to show text "Over limit" when a proposed display
name is too long.

* Allows names to go over limit to prevent splitting graphemes on input.

Server-side:

* Changes the MakeSafeStringOfLength to count number of unicode code points
instead of string bytes.

* name modal: check that newName is defined before iterating
This commit is contained in:
John Regan
2023-07-11 13:44:09 -04:00
committed by GitHub
parent dfa3a2a273
commit 3f65099910
2 changed files with 20 additions and 6 deletions

View File

@@ -18,10 +18,14 @@ func MakeSafeStringOfLength(s string, length int) string {
newString := s
newString = StripHTML(newString)
if len(newString) > length {
newString = newString[:length]
// Convert utf-8 string into Unicode code points.
codePoints := []rune(newString)
if len(codePoints) > length {
codePoints = codePoints[:length]
}
newString = string(codePoints)
newString = strings.ReplaceAll(newString, "\r", "")
newString = strings.TrimSpace(newString)