Trim IBAN input before validating value.

This commit is contained in:
Alex Hart
2023-10-16 15:10:03 -03:00
committed by Cody Henthorne
parent 5aec4b4571
commit 073e138ab2
2 changed files with 10 additions and 8 deletions

View File

@@ -14,13 +14,13 @@ data class BankTransferDetailsState(
val ibanValidity: IBANValidator.Validity = IBANValidator.Validity.POTENTIALLY_VALID,
val displayFindAccountInfoSheet: Boolean = false
) {
val canProceed = name.isNotEmpty() && email.isNotEmpty() && ibanValidity == IBANValidator.Validity.COMPLETELY_VALID
val canProceed = name.isNotBlank() && email.isNotBlank() && ibanValidity == IBANValidator.Validity.COMPLETELY_VALID
fun asSEPADebitData(): StripeApi.SEPADebitData {
return StripeApi.SEPADebitData(
iban = iban,
name = name,
email = email
iban = iban.trim(),
name = name.trim(),
email = email.trim()
)
}
}

View File

@@ -95,17 +95,19 @@ object IBANValidator {
}
fun validate(iban: String, isIBANFieldFocused: Boolean): Validity {
if (iban.isEmpty()) {
val trimmedIban = iban.trim()
if (trimmedIban.isEmpty()) {
return Validity.POTENTIALLY_VALID
}
val lengthValidity = validateLength(iban, isIBANFieldFocused)
val lengthValidity = validateLength(trimmedIban, isIBANFieldFocused)
if (lengthValidity != Validity.COMPLETELY_VALID) {
return lengthValidity
}
val countryAndCheck = iban.take(4)
val rearranged = iban.drop(4) + countryAndCheck
val countryAndCheck = trimmedIban.take(4)
val rearranged = trimmedIban.drop(4) + countryAndCheck
val expanded = rearranged.map {
if (it.isLetter()) {
(it - 'A') + 10