fix: fixed card and address list having duplicate items, and a checkout flow infinate loop condition
Some checks failed
Deploy / deploy (push) Has been cancelled
Some checks failed
Deploy / deploy (push) Has been cancelled
This commit is contained in:
@@ -141,6 +141,12 @@ func (h *AddressHandler) CreateAddress(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// remove existing addres with the same street addres
|
||||
var existing models.Address
|
||||
if err := db.Where("user_id = ? AND street = ?", userID, address.Street).First(&existing).Error; err == nil {
|
||||
db.Delete(&existing)
|
||||
}
|
||||
|
||||
if err := db.Create(&address).Error; err != nil {
|
||||
utils.RespondError(w, http.StatusInternalServerError, "DATABASE_ERROR", "failed to create address", nil)
|
||||
return
|
||||
|
||||
@@ -248,6 +248,13 @@ func (h *CardHandler) SaveCard(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// remove existing local card with the same last4 + brand + expiry
|
||||
var existingCard models.Card
|
||||
if err := db.Where("user_id = ? AND last4 = ? AND brand = ? AND exp_month = ? AND exp_year = ?",
|
||||
user.ID, pm.Card.Last4, string(pm.Card.Brand), pm.Card.ExpMonth, pm.Card.ExpYear).First(&existingCard).Error; err == nil {
|
||||
db.Delete(&existingCard)
|
||||
}
|
||||
|
||||
// Persist only the safe card metadata — no raw card data is stored.
|
||||
card := models.Card{
|
||||
UserID: user.ID,
|
||||
|
||||
@@ -187,8 +187,9 @@ func (m Model) ReviewUpdate(msg tea.Msg) (Model, tea.Cmd) {
|
||||
case CheckoutResultMsg:
|
||||
m.CheckingOut = false
|
||||
if msg.Err != nil {
|
||||
m.ErrorMsg = fmt.Sprintf("checkout failed: %v", msg.Err)
|
||||
m = m.SwitchPage(paymentPage)
|
||||
m.ErrorMsg = fmt.Sprintf("checkout failed: %v", msg.Err)
|
||||
m.review.cardJustAdded = false
|
||||
m.payment.view = 0
|
||||
m.payment.form = nil
|
||||
return m, nil
|
||||
|
||||
Reference in New Issue
Block a user