Skip to content

Commit e37c81e

Browse files
committed
refactor: apply suggested changes
1 parent df619a0 commit e37c81e

2 files changed

Lines changed: 18 additions & 8 deletions

File tree

src/CardSchemeComponent.res

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,13 @@ module CoBadgeCardSchemeDropDown = {
2222
}
2323

2424
@react.component
25-
let make = (~cardNumber, ~paymentType, ~cardBrand, ~setCardBrand) => {
25+
let make = (
26+
~cardNumber,
27+
~paymentType,
28+
~cardBrand,
29+
~setCardBrand,
30+
~isCoBadgedCardDetectedOnce: React.ref<bool>,
31+
) => {
2632
let cardType = React.useMemo1(_ => cardBrand->CardUtils.getCardType, [cardBrand])
2733
let animate = cardType == NOTFOUND ? "animate-slideLeft" : "animate-slideRight"
2834
let cardBrandIcon = React.useMemo1(
@@ -46,7 +52,6 @@ let make = (~cardNumber, ~paymentType, ~cardBrand, ~setCardBrand) => {
4652
let marginLeft = isCardCoBadged ? "-ml-2" : ""
4753

4854
let loggerState = Recoil.useRecoilValueFromAtom(RecoilAtoms.loggerAtom)
49-
let isCoBadgedCardDetectedOnce = React.useRef(false)
5055
let shouldShowCoBadgeCardSchemeDropDown =
5156
isCardCoBadged && cardNumber->CardUtils.clearSpaces->String.length >= 16
5257

src/Hooks/CommonCardProps.res

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ let useCardForm = (~logger, ~paymentType) => {
2727
let expiryRef = React.useRef(Nullable.null)
2828
let cvcRef = React.useRef(Nullable.null)
2929
let zipRef = React.useRef(Nullable.null)
30+
let isCoBadgedCardDetectedOnce = React.useRef(false)
31+
let prevCardBrandRef = React.useRef("")
3032

3133
let (isCardValid, setIsCardValid) = React.useState(_ => None)
3234
let (isExpiryValid, setIsExpiryValid) = React.useState(_ => None)
@@ -84,10 +86,13 @@ let useCardForm = (~logger, ~paymentType) => {
8486
}, [showPaymentMethodsScreen])
8587

8688
React.useEffect(() => {
87-
setCvcNumber(_ => "")
88-
setCardExpiry(_ => "")
89-
setIsExpiryValid(_ => None)
90-
setIsCVCValid(_ => None)
89+
if !isCoBadgedCardDetectedOnce.current {
90+
setCvcNumber(_ => "")
91+
setCardExpiry(_ => "")
92+
setIsExpiryValid(_ => None)
93+
setIsCVCValid(_ => None)
94+
}
95+
prevCardBrandRef.current = cardBrand
9196
None
9297
}, [cardBrand])
9398

@@ -120,7 +125,7 @@ let useCardForm = (~logger, ~paymentType) => {
120125
setDisplayPincode(_ => false)
121126
}
122127
setCardNumber(_ => card)
123-
if card->String.length == 0 {
128+
if card->String.length == 0 && prevCardBrandRef.current !== "" {
124129
setCvcNumber(_ => "")
125130
setCardExpiry(_ => "")
126131
setIsExpiryValid(_ => None)
@@ -293,7 +298,7 @@ let useCardForm = (~logger, ~paymentType) => {
293298
}, [cardNumber])
294299

295300
let icon = React.useMemo(() => {
296-
<CardSchemeComponent cardNumber paymentType cardBrand setCardBrand />
301+
<CardSchemeComponent cardNumber paymentType cardBrand setCardBrand isCoBadgedCardDetectedOnce />
297302
}, (cardType, paymentType, cardBrand, cardNumber))
298303

299304
let cardProps: CardUtils.cardProps = {

0 commit comments

Comments
 (0)