diff --git a/pedi-foods/Darwin/Assets.xcassets/alelocard_logo.imageset/Contents.json b/pedi-foods/Darwin/Assets.xcassets/alelocard_logo.imageset/Contents.json new file mode 100644 index 0000000..c43b70e --- /dev/null +++ b/pedi-foods/Darwin/Assets.xcassets/alelocard_logo.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "alelocard_logo.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/pedi-foods/Darwin/Assets.xcassets/alelocard_logo.imageset/alelocard_logo.png b/pedi-foods/Darwin/Assets.xcassets/alelocard_logo.imageset/alelocard_logo.png new file mode 100644 index 0000000..9201194 Binary files /dev/null and b/pedi-foods/Darwin/Assets.xcassets/alelocard_logo.imageset/alelocard_logo.png differ diff --git a/pedi-foods/Darwin/Assets.xcassets/amexcard_logo.imageset/Contents.json b/pedi-foods/Darwin/Assets.xcassets/amexcard_logo.imageset/Contents.json new file mode 100644 index 0000000..e25b625 --- /dev/null +++ b/pedi-foods/Darwin/Assets.xcassets/amexcard_logo.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "amexcard_logo.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/pedi-foods/Darwin/Assets.xcassets/amexcard_logo.imageset/amexcard_logo.png b/pedi-foods/Darwin/Assets.xcassets/amexcard_logo.imageset/amexcard_logo.png new file mode 100644 index 0000000..42edc89 Binary files /dev/null and b/pedi-foods/Darwin/Assets.xcassets/amexcard_logo.imageset/amexcard_logo.png differ diff --git a/pedi-foods/Darwin/Assets.xcassets/hipercard_logo.imageset/Contents.json b/pedi-foods/Darwin/Assets.xcassets/hipercard_logo.imageset/Contents.json new file mode 100644 index 0000000..9893028 --- /dev/null +++ b/pedi-foods/Darwin/Assets.xcassets/hipercard_logo.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "hipercard_logo.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/pedi-foods/Darwin/Assets.xcassets/hipercard_logo.imageset/hipercard_logo.png b/pedi-foods/Darwin/Assets.xcassets/hipercard_logo.imageset/hipercard_logo.png new file mode 100644 index 0000000..a184c60 Binary files /dev/null and b/pedi-foods/Darwin/Assets.xcassets/hipercard_logo.imageset/hipercard_logo.png differ diff --git a/pedi-foods/Darwin/Assets.xcassets/icon_pix.imageset/Contents.json b/pedi-foods/Darwin/Assets.xcassets/icon_pix.imageset/Contents.json new file mode 100644 index 0000000..22f4230 --- /dev/null +++ b/pedi-foods/Darwin/Assets.xcassets/icon_pix.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "icon_pix.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/pedi-foods/Darwin/Assets.xcassets/icon_pix.imageset/icon_pix.png b/pedi-foods/Darwin/Assets.xcassets/icon_pix.imageset/icon_pix.png new file mode 100644 index 0000000..d3d4824 Binary files /dev/null and b/pedi-foods/Darwin/Assets.xcassets/icon_pix.imageset/icon_pix.png differ diff --git a/pedi-foods/Darwin/Assets.xcassets/mastercard_logo.imageset/Contents.json b/pedi-foods/Darwin/Assets.xcassets/mastercard_logo.imageset/Contents.json new file mode 100644 index 0000000..a37b708 --- /dev/null +++ b/pedi-foods/Darwin/Assets.xcassets/mastercard_logo.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "mastercard_logo.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/pedi-foods/Darwin/Assets.xcassets/mastercard_logo.imageset/mastercard_logo.png b/pedi-foods/Darwin/Assets.xcassets/mastercard_logo.imageset/mastercard_logo.png new file mode 100644 index 0000000..fefd01b Binary files /dev/null and b/pedi-foods/Darwin/Assets.xcassets/mastercard_logo.imageset/mastercard_logo.png differ diff --git a/pedi-foods/Darwin/Assets.xcassets/sodexo_logo.imageset/Contents.json b/pedi-foods/Darwin/Assets.xcassets/sodexo_logo.imageset/Contents.json new file mode 100644 index 0000000..450d47f --- /dev/null +++ b/pedi-foods/Darwin/Assets.xcassets/sodexo_logo.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "sodexo_logo.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/pedi-foods/Darwin/Assets.xcassets/sodexo_logo.imageset/sodexo_logo.png b/pedi-foods/Darwin/Assets.xcassets/sodexo_logo.imageset/sodexo_logo.png new file mode 100644 index 0000000..1aefb69 Binary files /dev/null and b/pedi-foods/Darwin/Assets.xcassets/sodexo_logo.imageset/sodexo_logo.png differ diff --git a/pedi-foods/Darwin/Assets.xcassets/visacard_logo.imageset/Contents.json b/pedi-foods/Darwin/Assets.xcassets/visacard_logo.imageset/Contents.json new file mode 100644 index 0000000..6cbca03 --- /dev/null +++ b/pedi-foods/Darwin/Assets.xcassets/visacard_logo.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "visacard_logo.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/pedi-foods/Darwin/Assets.xcassets/visacard_logo.imageset/visacard_logo.png b/pedi-foods/Darwin/Assets.xcassets/visacard_logo.imageset/visacard_logo.png new file mode 100644 index 0000000..279c267 Binary files /dev/null and b/pedi-foods/Darwin/Assets.xcassets/visacard_logo.imageset/visacard_logo.png differ diff --git a/pedi-foods/Sources/PediFoods/Views/Main/CheckoutView.swift b/pedi-foods/Sources/PediFoods/Views/Main/CheckoutView.swift index 913c45f..58d65ab 100644 --- a/pedi-foods/Sources/PediFoods/Views/Main/CheckoutView.swift +++ b/pedi-foods/Sources/PediFoods/Views/Main/CheckoutView.swift @@ -928,46 +928,6 @@ struct CardSelectionSheet: View { _selectedCardId = State(initialValue: savedCards.first(where: { $0.isDefault })?.id ?? savedCards.first?.id) } - private var detectedBrandLogo: String? { - let clean = cardNumber.filter(\.isNumber) - guard !clean.isEmpty else { return nil } - - // Sodexo - if clean.hasPrefix("506766") || clean.hasPrefix("603389") { - return "sodexo_logo" - } - - // Alelo - if clean.hasPrefix("5067") || clean.hasPrefix("5078") || clean.hasPrefix("6278") || clean.hasPrefix("6367") { - return "alelocard_logo" - } - - // Hipercard - if clean.hasPrefix("3841") || clean.hasPrefix("606282") || clean.hasPrefix("637095") || clean.hasPrefix("637568") { - return "hipercard_logo" - } - - // Visa - if clean.hasPrefix("4") { - return "visacard_logo" - } - - // Mastercard - if (51...55).contains(Int(clean.prefix(2)) ?? 0) { - return "mastercard_logo" - } - if let prefix4 = Int(clean.prefix(4)), (2221...2720).contains(prefix4) { - return "mastercard_logo" - } - - // Amex - if clean.hasPrefix("34") || clean.hasPrefix("37") { - return "amexcard_logo" - } - - return nil - } - var body: some View { VStack(spacing: 0) { // Header @@ -1108,6 +1068,46 @@ struct PaymentCardView: View { @State var nickname = "" @State var isSubmitting = false + private var detectedBrandLogo: String? { + let clean = cardNumber.filter(\.isNumber) + guard !clean.isEmpty else { return nil } + + // Sodexo + if clean.hasPrefix("506766") || clean.hasPrefix("603389") { + return "sodexo_logo" + } + + // Alelo + if clean.hasPrefix("5067") || clean.hasPrefix("5078") || clean.hasPrefix("6278") || clean.hasPrefix("6367") { + return "alelocard_logo" + } + + // Hipercard + if clean.hasPrefix("3841") || clean.hasPrefix("606282") || clean.hasPrefix("637095") || clean.hasPrefix("637568") { + return "hipercard_logo" + } + + // Visa + if clean.hasPrefix("4") { + return "visacard_logo" + } + + // Mastercard + if (51...55).contains(Int(clean.prefix(2)) ?? 0) { + return "mastercard_logo" + } + if let prefix4 = Int(clean.prefix(4)), (2221...2720).contains(prefix4) { + return "mastercard_logo" + } + + // Amex + if clean.hasPrefix("34") || clean.hasPrefix("37") { + return "amexcard_logo" + } + + return nil + } + init(context: CardPaymentContext, appState: Binding, onOrderCreated: @escaping (String, String?) -> Void) { self.context = context self._appState = appState