File tree 5 files changed +25
-12
lines changed
5 files changed +25
-12
lines changed Original file line number Diff line number Diff line change @@ -73,7 +73,9 @@ let make = (
73
73
text ,
74
74
expireRef : React .ref <Nullable .t <ReactNative .TextInput .element >>,
75
75
) => {
76
- let cardBrand = getCardBrand (text )
76
+ let enabledCardSchemes = PaymentUtils .getCardNetworks (cardNetworks -> Option .getOr (None ))
77
+ let validCardBrand = getFirstValidCardScheme (~cardNumber = text , ~enabledCardSchemes )
78
+ let cardBrand = validCardBrand === "" ? getCardBrand (text ) : validCardBrand
77
79
let num = formatCardNumber (text , cardType (cardBrand ))
78
80
79
81
let isthisValid = cardValid (num , cardBrand )
Original file line number Diff line number Diff line change @@ -46,21 +46,14 @@ module CardSchemeSelectionPopoverElement = {
46
46
let make = (~cardNumber , ~cardNetworks ) => {
47
47
let (cardData , setCardData ) = React .useContext (CardDataContext .cardDataContext )
48
48
49
- let cardBrand = Validation .getCardBrand (cardNumber )
49
+ let enabledCardSchemes = PaymentUtils .getCardNetworks (cardNetworks -> Option .getOr (None ))
50
+ let validCardBrand = Validation .getFirstValidCardScheme (~cardNumber , ~enabledCardSchemes )
51
+ let cardBrand = validCardBrand === "" ? Validation .getCardBrand (cardNumber ) : validCardBrand
50
52
let (cardBrandIcon , setCardBrandIcon ) = React .useState (_ =>
51
53
cardBrand === "" ? "waitcard" : cardBrand
52
54
)
53
55
let (dropDownIconWidth , _ ) = React .useState (_ => Animated .Value .create (0 .))
54
56
55
- let getCardNetworks = cardNetworks => {
56
- switch cardNetworks {
57
- | Some (cardNetworks ) =>
58
- cardNetworks -> Array .map ((item : PaymentMethodListType .card_networks ) => item .card_network )
59
- | None => []
60
- }
61
- }
62
-
63
- let enabledCardSchemes = getCardNetworks (cardNetworks -> Option .getOr (None ))
64
57
let matchedCardSchemes = cardNumber -> Validation .clearSpaces -> Validation .getAllMatchedCardSchemes
65
58
let eligibleCardSchemes = Validation .getEligibleCoBadgedCardSchemes (
66
59
~matchedCardSchemes ,
Original file line number Diff line number Diff line change @@ -135,7 +135,6 @@ let getShippingDetails = (dict): SdkTypes.addressDetails => {
135
135
->Option.getOr(Dict.make())
136
136
137
137
let fullName = getString(shippingDict, "addressee", "")
138
- Console.log2("FullName", fullName)
139
138
140
139
let nameArr = String.split(fullName, " ")
141
140
let firstName = nameArr[0]->Option.getOr("")
Original file line number Diff line number Diff line change @@ -181,3 +181,11 @@ let getActionType = (nextActionObj: option<PaymentConfirmTypes.nextAction>) => {
181
181
let actionType = nextActionObj -> Option .getOr ({type_ : "" , redirectToUrl : "" })
182
182
actionType .type_
183
183
}
184
+
185
+ let getCardNetworks = cardNetworks => {
186
+ switch cardNetworks {
187
+ | Some (cardNetworks ) =>
188
+ cardNetworks -> Array .map ((item : PaymentMethodListType .card_networks ) => item .card_network )
189
+ | None => []
190
+ }
191
+ }
Original file line number Diff line number Diff line change @@ -146,6 +146,17 @@ let getAllMatchedCardSchemes = cardNumber => {
146
146
})
147
147
}
148
148
149
+ let isCardSchemeEnabled = (~cardScheme , ~enabledCardSchemes ) => {
150
+ enabledCardSchemes -> Array .includes (cardScheme )
151
+ }
152
+
153
+ let getFirstValidCardScheme = (~cardNumber , ~enabledCardSchemes ) => {
154
+ let allMatchedCards = getAllMatchedCardSchemes (cardNumber -> clearSpaces )
155
+ allMatchedCards
156
+ -> Array .find (card => isCardSchemeEnabled (~cardScheme = card , ~enabledCardSchemes ))
157
+ -> Option .getOr ("" )
158
+ }
159
+
149
160
let getEligibleCoBadgedCardSchemes = (~matchedCardSchemes , ~enabledCardSchemes ) => {
150
161
matchedCardSchemes -> Array .filter (ele => enabledCardSchemes -> Array .includes (ele ))
151
162
}
You can’t perform that action at this time.
0 commit comments