From 8c19b1323cc44f8d77cfdbf61e00e6771a994a1d Mon Sep 17 00:00:00 2001 From: Daniel Arantes Loverde Date: Thu, 4 Jun 2026 15:58:52 -0300 Subject: [PATCH] fix(payment): accept either 2-digit or 4-digit years in card expiry validation --- .../Sources/PediFoods/Views/Main/CheckoutView.swift | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pedi-foods/Sources/PediFoods/Views/Main/CheckoutView.swift b/pedi-foods/Sources/PediFoods/Views/Main/CheckoutView.swift index bed7a3f..c36dd6a 100644 --- a/pedi-foods/Sources/PediFoods/Views/Main/CheckoutView.swift +++ b/pedi-foods/Sources/PediFoods/Views/Main/CheckoutView.swift @@ -1116,9 +1116,9 @@ struct PaymentCardView: View { _cpf = State(initialValue: appState.wrappedValue.profile.cpf) } - private func validateExpiryDate(digits: Int) -> Bool { + private func validateExpiryDate() -> Bool { let clean = expiry.filter(\.isNumber) - guard clean.count == digits else { return false } + guard clean.count == 4 || clean.count == 6 else { return false } let monthStr = String(clean.prefix(2)) guard let month = Int(monthStr), (1...12).contains(month) else { return false } return true @@ -1127,7 +1127,7 @@ struct PaymentCardView: View { var canSubmit: Bool { holderName.trimmingCharacters(in: .whitespaces).isEmpty == false && cardNumber.filter(\.isNumber).count >= 13 && - validateExpiryDate(digits: 4) && + validateExpiryDate() && cvv.filter(\.isNumber).count >= 3 && cpf.filter(\.isNumber).count == 11 } @@ -1673,9 +1673,9 @@ struct ChangePaymentNewCardView: View { _cpf = State(initialValue: appState.wrappedValue.profile.cpf) } - private func validateExpiryDate(digits: Int) -> Bool { + private func validateExpiryDate() -> Bool { let clean = expiry.filter(\.isNumber) - guard clean.count == digits else { return false } + guard clean.count == 4 || clean.count == 6 else { return false } let monthStr = String(clean.prefix(2)) guard let month = Int(monthStr), (1...12).contains(month) else { return false } return true @@ -1684,7 +1684,7 @@ struct ChangePaymentNewCardView: View { var canSubmit: Bool { holderName.trimmingCharacters(in: .whitespaces).isEmpty == false && cardNumber.filter(\.isNumber).count >= 13 && - validateExpiryDate(digits: 6) && + validateExpiryDate() && cvv.filter(\.isNumber).count >= 3 && cpf.filter(\.isNumber).count == 11 }