Fix: Limit donation amount input to 9 characters (#13872)

- Added validation in MoneyFilter to restrict input to 9 characters.
- Updated both filter and afterTextChanged methods to enforce this limit.
- Ensured edge cases and formatting remain functional.
- Resolves #13872.
This commit is contained in:
devavanza 2025-01-05 02:35:43 +05:00
parent ba79a3e83e
commit c08af2e1bd

View file

@ -257,6 +257,11 @@ data class Boost(
val result = dest.subSequence(0, dstart).toString() + source.toString() + dest.subSequence(dend, dest.length)
val resultWithoutCurrencyPrefix = StringUtil.stripBidiIndicator(result.removePrefix(symbol).removeSuffix(symbol).trim())
// Enforce maximum length of 9 characters
if (resultWithoutCurrencyPrefix.length > 9) {
return "" // Reject the new input
}
if (resultWithoutCurrencyPrefix.length == 1 && !resultWithoutCurrencyPrefix.isDigitsOnly() && resultWithoutCurrencyPrefix != separator.toString()) {
return dest.subSequence(dstart, dend)
}
@ -278,6 +283,7 @@ data class Boost(
if (s.isNullOrEmpty()) return
val hasSymbol = s.startsWith(symbol) || s.endsWith(symbol)
if (hasSymbol && symbolPattern.matchEntire(s.toString()) != null) {
s.clear()
} else if (!hasSymbol) {
@ -312,6 +318,13 @@ data class Boost(
}
val withoutSymbol = s.removePrefix(symbol).removeSuffix(symbol).trim().toString()
// Check if the value exceeds 9 characters
if (withoutSymbol.length > 9) {
s.delete(9, s.length) // Trim to the first 9 characters
return
}
val withoutLeadingZeroes: String = try {
NumberFormat.getInstance().apply {
isGroupingUsed = false