customcommands: align frontend length display with backend validation #1710
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.
The backend validation for custom command response length checks the number of runes (that is, Unicode code points) in the input:
yagpdb/customcommands/customcommands.go
Line 157 in b9dabf9
However, the frontend character counter reads the
length
field of the response JavaScript String, which measures UTF-16 code units. The number of Unicode code points is not necessarily equal to the number of UTF-16 code units, occasionally producing a confusing discrepancy between frontend and backend. To demonstrate the issue, create a new custom command and run the following in console:The character counter displays
10002/10000
(seemingly over the limit!) but this custom command can still be saved without error, since the backend validation only sees 5001 runes.Fix this discrepancy by counting Unicode code points in the frontend as well.