File tree 4 files changed +26
-11
lines changed
4 files changed +26
-11
lines changed Original file line number Diff line number Diff line change @@ -69,7 +69,9 @@ let make = (
69
69
text ,
70
70
expireRef : React .ref <Nullable .t <ReactNative .TextInput .element >>,
71
71
) => {
72
- let cardBrand = getCardBrand (text )
72
+ let enabledCardSchemes = PaymentUtils .getCardNetworks (cardNetworks -> Option .getOr (None ))
73
+ let validCardBrand = getFirstValidCardScheme (~cardNumber = text , ~enabledCardSchemes )
74
+ let cardBrand = validCardBrand === "" ? getCardBrand (text ) : validCardBrand
73
75
let num = formatCardNumber (text , cardType (cardBrand ))
74
76
75
77
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 @@ -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,18 @@ 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 .filter (card => isCardSchemeEnabled (~cardScheme = card , ~enabledCardSchemes ))
157
+ -> Array .get (0 )
158
+ -> Option .getOr ("" )
159
+ }
160
+
149
161
let getEligibleCoBadgedCardSchemes = (~matchedCardSchemes , ~enabledCardSchemes ) => {
150
162
matchedCardSchemes -> Array .filter (ele =>
151
163
enabledCardSchemes -> Array .includes (ele )
You can’t perform that action at this time.
0 commit comments