fix(api): map API response error payload and validate card saving synchronously

This commit is contained in:
Daniel Arantes Loverde
2026-06-04 16:06:22 -03:00
parent 8c19b1323c
commit 39ddf9c86c
2 changed files with 80 additions and 21 deletions

View File

@@ -1332,9 +1332,7 @@ struct PaymentCardView: View {
nickname: nickname.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty ? nil : nickname,
isDefault: false
)
Task<Void, Never> {
do { _ = try await ApiService().saveCard(payload: savePayload) } catch {}
}
_ = try await ApiService().saveCard(payload: savePayload)
}
let response = try await ApiService().createOrder(storeId: context.storeId, payload: payload)
@@ -1761,12 +1759,11 @@ struct ChangePaymentNewCardView: View {
appState.profile.cpf = cleanCpf
Task<Void, Never> { do { _ = try await ApiService().updateProfileCpf(cpf: cleanCpf) } catch {} }
}
if saveCard {
let sp = SaveCardPayload(creditCard: SaveCardCreditCardPayload(holderName: holderName, number: cleanNumber, expiryMonth: expiryMonth, expiryYear: expiryYear, ccv: cvv), creditCardHolderInfo: holderInfo, nickname: nickname.trimmingCharacters(in: .whitespaces).isEmpty ? nil : nickname, isDefault: false)
Task<Void, Never> { do { _ = try await ApiService().saveCard(payload: sp) } catch {} }
}
do {
if saveCard {
let sp = SaveCardPayload(creditCard: SaveCardCreditCardPayload(holderName: holderName, number: cleanNumber, expiryMonth: expiryMonth, expiryYear: expiryYear, ccv: cvv), creditCardHolderInfo: holderInfo, nickname: nickname.trimmingCharacters(in: .whitespaces).isEmpty ? nil : nickname, isDefault: false)
_ = try await ApiService().saveCard(payload: sp)
}
let response = try await ApiService().changePaymentMethod(storeId: pixContext.storeId, orderId: pixContext.orderId, payload: payload)
if response.error { SnackbarCenter.shared.show(title: response.message ?? "Pagamento recusado.", style: .error, icon: "xmark.octagon.fill", duration: 4.0); return }
onConfirmed(pixContext.orderId, pixContext.shortId)