Commit Graph

42 Commits

Author SHA1 Message Date
Daniel Arantes Loverde
b633adad61 Merge branch 'feature/card-management' into feature/card-brand-logo
# Conflicts:
#	pedi-foods/Sources/PediFoods/Views/Main/CheckoutView.swift
2026-06-04 15:38:50 -03:00
Daniel Arantes Loverde
c31875ec3b fix(payment): set text field foreground color to brandDark for card input fields 2026-06-04 15:28:20 -03:00
Daniel Arantes Loverde
a319a8f534 feat(payment): add custom logo for PIX payment method 2026-06-04 15:27:15 -03:00
Daniel Arantes Loverde
46d955a92f feat(payment): identify card brand and display logo dynamically 2026-06-04 15:23:02 -03:00
Daniel Arantes Loverde
ee8745553e feat(payment): implement change payment method (PATCH /payment-method)
- ChangePaymentMethodPayload + ChangePaymentMethodResult models
- ApiService.changePaymentMethod()
- PixPaymentContext gains storeId + order data for payment switch
- PaymentPixView: Trocar button opens ChangePaymentSheet with 3 options
- ChangePaymentSheet: Novo PIX (new QR), Cartão (saved or new), Pagar na Entrega
- ChangePaymentCardSheet + ChangePaymentNewCardView with same card masks/validation
- OrdersView/OrderEntryDestinationView: threaded appState binding
2026-06-03 18:49:07 -03:00
Daniel Arantes Loverde
9525c19b6b fix(cards): propagate API validation error message to user on card submit failure 2026-06-03 18:06:43 -03:00
Daniel Arantes Loverde
abd58ac36d feat(cards): add input masks and char limits to card form fields
- Card number: groups of 4 digits (0000 0000 0000 0000), max 16 digits
- Expiry: MM/AAAA mask, max 6 digits
- CVV: digits only, max 4
- CPF: 000.000.000-00 mask, max 11 digits
- canSubmit validates stripped digit counts
2026-06-03 17:58:44 -03:00
Daniel Arantes Loverde
a548955320 fix(cards): replace NavigationStack header with custom X button, new card form opens as sheet 2026-06-03 17:44:10 -03:00
Daniel Arantes Loverde
6b397db494 feat(cards): implement full saved card management and transparent checkout
- ApiCardModels.swift: SavedCard, SaveCardPayload, CreditCardOrderPayload, etc.
- ApiOrderModels.swift: add savedCardId, clientCpfCnpj, creditCard, creditCardHolderInfo to CreateOrderPayload; Codable for item/addon payloads
- ApiService.swift: listCards, saveCard, updateCard, deleteCard, updateProfileCpf
- AppState.ProfileState: add cpf field
- CheckoutView: CardSelectionSheet (list saved cards + add new), rewrite PaymentCardView (submits order with card data), CardPaymentContext carries full order data
- CheckoutView+Logic: buildCreateOrderPayload accepts card params, new loadSavedCards/confirmOrderWithSavedCard/handleOrderResponse helpers, redirect credit card confirm to CardSelectionSheet
- OrdersView: CREDIT_CARD pending orders go to tracking (not card form, since card is now submitted with order)
- UserProfileView: CPF field with mask, save via PATCH /api/customer/profile
2026-06-03 17:32:30 -03:00
Daniel Arantes Loverde
2d27240cee feat(checkout): replace dual payment group cards with single toggle switch
Toggle ON = Pagar Pelo App (default), shows in-app methods (PIX, Credit Card)
Toggle OFF = Pagar Na Maquininha, shows store machine methods
Automatically resets paymentMethod on toggle switch
Removes paymentGroupCard helper, saves vertical space
2026-06-03 15:49:26 -03:00
Daniel Arantes Loverde
c89c80e8d1 fix(store): replace pinnedViews with ZStack overlay to prevent EXC_BAD_ACCESS crash
pinnedViews + rapid state changes from stretchAmount every frame during overscroll
triggers SwiftUI memory corruption. ZStack overlay approach is crash-free:
- LazyVStack with no pinnedViews
- Inline tabs fade out when pinned threshold reached
- Overlay tabs (with safeAreaTop padding) fade in at top of ZStack
2026-06-03 15:20:44 -03:00
Daniel Arantes Loverde
82ab29388f fix(store): revert non-image elements to original, stretch only cover image 2026-06-03 15:16:23 -03:00
Daniel Arantes Loverde
3e18c02f4d fix(store): pin all non-image elements during overscroll bounce
Apply offset(y: -stretchAmount) to gradient, buttons, summaryCard, storeLogoBadge, and hard-cut rectangle so only the cover image stretches on pull-down
2026-06-03 15:09:17 -03:00
Daniel Arantes Loverde
1f2089772c fix(store): separate gradient from cover image so only image stretches on overscroll 2026-06-03 15:03:54 -03:00
Daniel Arantes Loverde
d2189bb701 feat(store): stretch cover image on pull-down overscroll
- Remove max(0) clamp in ScrollOffsetReader to allow negative values during bounce
- Add stretchAmount computed var (max(0, -scrollOffset))
- Hero image frame grows by stretchAmount and offsets upward on overscroll
- isCategoryTabsPinned still uses max(0, scrollOffset) via >= check
2026-06-03 15:01:23 -03:00
Daniel Arantes Loverde
f51319b486 master merged 2026-06-03 14:52:27 -03:00
Daniel Arantes Loverde
0ebb854213 updates 2026-04-16 14:50:07 -03:00
Daniel Arantes Loverde
9bdb9dfdea feat(android): complete first successful skip export 2026-03-20 10:56:22 -03:00
Daniel Arantes Loverde
cb7bfef356 fix(android): isolate platform-specific shared ui code 2026-03-19 16:11:07 -03:00
Daniel Arantes Loverde
c49725a5f7 backup 2026-03-19 08:44:31 -03:00
Daniel Arantes Loverde
5fa98ce358 Fixs 2026-03-10 09:19:50 -03:00
Daniel Arantes Loverde
728cc94525 Fix 2026-03-05 14:29:20 -03:00
Daniel Arantes Loverde
30f0327a53 fix content sizes 2026-03-05 11:09:47 -03:00
Daniel Arantes Loverde
a98089b48d Fix 2026-03-05 11:00:17 -03:00
Daniel Arantes Loverde
83882538c2 feat(orders-ui): alinhar lista/detalhe ao layout e corrigir build 2026-03-05 10:23:04 -03:00
Daniel Arantes Loverde
1407f0b9de Fix 2026-03-05 10:10:27 -03:00
Daniel Arantes Loverde
a8e3631177 feat(orders): separar reviews e criar detalhe de pedido 2026-03-05 10:10:03 -03:00
Daniel Arantes Loverde
56d6ff7223 feat(orders): separar pedidos de reviews e listar pendentes 2026-03-05 10:05:48 -03:00
Daniel Arantes Loverde
ca83a275ac payment and list 2026-02-24 10:19:47 -03:00
Daniel Arantes Loverde
3a3dc7217b Fix login 2026-02-21 18:51:39 -03:00
Daniel Arantes Loverde
0f5ad4c268 Payments 2026-02-15 08:18:06 -03:00
Daniel Arantes Loverde
d7b8b1864a segregate files 2026-02-13 11:01:54 -03:00
Daniel Arantes Loverde
4a40936293 swipe to delete address 2026-02-12 18:39:02 -03:00
Daniel Arantes Loverde
c7740174d1 scroll sticked 2026-02-12 15:27:43 -03:00
Daniel Arantes Loverde
b027a10c8d scroll stick 2026-02-12 15:05:09 -03:00
Daniel Arantes Loverde
38fc71718b login flow 2026-02-12 09:44:40 -03:00
Daniel Arantes Loverde
3176b67914 Colapse fix 2026-02-09 14:41:18 -03:00
Daniel Arantes Loverde
54686397b9 Not has address 2026-02-07 17:16:45 -03:00
Daniel Arantes Loverde
92c2a67736 tabbar 2026-02-06 09:51:53 -03:00
Daniel Arantes Loverde
51d02f6715 Login flow fixed 2026-02-05 16:57:27 -03:00
Daniel Arantes Loverde
01c1da0430 fix content space from header 2026-02-04 17:14:34 -03:00
Daniel Arantes Loverde
33fc111459 Login and Home 2026-02-04 16:55:29 -03:00