diff --git a/src/Components/SavedMethods.res b/src/Components/SavedMethods.res index 9ca7df087..3f18d0d7c 100644 --- a/src/Components/SavedMethods.res +++ b/src/Components/SavedMethods.res @@ -1,5 +1,3 @@ -open CardUtils -open Utils @react.component let make = ( ~paymentToken, @@ -10,6 +8,10 @@ let make = ( ~paymentType, ~list: PaymentMethodsRecord.list, ) => { + open CardUtils + open Utils + open UtilityHooks + let {themeObj, localeString} = Recoil.useRecoilValueFromAtom(RecoilAtoms.configAtom) let (showFields, setShowFields) = Recoil.useRecoilState(RecoilAtoms.showCardFieldsAtom) let areRequiredFieldsValid = Recoil.useRecoilValueFromAtom(RecoilAtoms.areRequiredFieldsValid) @@ -21,7 +23,7 @@ let make = ( } let (isSaveCardsChecked, setIsSaveCardsChecked) = React.useState(_ => false) let {displaySavedPaymentMethodsCheckbox} = Recoil.useRecoilValueFromAtom(RecoilAtoms.optionAtom) - let isGuestCustomer = UtilityHooks.useIsGuestCustomer() + let isGuestCustomer = useIsGuestCustomer() let intent = PaymentHelpers.usePaymentIntent(Some(loggerState), Card) let (token, _) = paymentToken @@ -36,13 +38,12 @@ let make = ( } } - let isCustomerAcceptanceRequired = React.useMemo(() => { - if displaySavedPaymentMethodsCheckbox { - isSaveCardsChecked || list.payment_type === SETUP_MANDATE - } else { - !(isGuestCustomer || list.payment_type === NORMAL) - } - }, (isSaveCardsChecked, list.payment_type)) + let isCustomerAcceptanceRequired = useIsCustomerAcceptanceRequired( + ~displaySavedPaymentMethodsCheckbox, + ~isSaveCardsChecked, + ~list, + ~isGuestCustomer, + ) let bottomElement = { savedMethods @@ -101,7 +102,7 @@ let make = ( let paymentType = customerMethod.paymentMethodType->Option.getOr(customerMethod.paymentMethod) - UtilityHooks.useHandlePostMessages(~complete, ~empty, ~paymentType, ~savedMethod=true) + useHandlePostMessages(~complete, ~empty, ~paymentType, ~savedMethod=true) let submitCallback = React.useCallback((ev: Window.event) => { let json = ev.data->JSON.parseExn @@ -176,8 +177,9 @@ let make = ( )) useSubmitPaymentData(submitCallback) - let conditionsForShowingSaveCardCheckbox = + let conditionsForShowingSaveCardCheckbox = React.useMemo(() => { !isGuestCustomer && list.payment_type !== SETUP_MANDATE && displaySavedPaymentMethodsCheckbox + }, (isGuestCustomer, list, displaySavedPaymentMethodsCheckbox))
{if savedCardlength === 0 && (loadSavedCards === PaymentType.LoadingSavedCards || !showFields) { diff --git a/src/Hooks/UtilityHooks.res b/src/Hooks/UtilityHooks.res index f34078b30..02380e144 100644 --- a/src/Hooks/UtilityHooks.res +++ b/src/Hooks/UtilityHooks.res @@ -21,3 +21,16 @@ let useHandlePostMessages = (~complete, ~empty, ~paymentType, ~savedMethod=false None }, (complete, empty, paymentType)) } + +let useIsCustomerAcceptanceRequired = ( + ~displaySavedPaymentMethodsCheckbox, + ~isSaveCardsChecked, + ~list: PaymentMethodsRecord.list, + ~isGuestCustomer, +) => React.useMemo(() => { + if displaySavedPaymentMethodsCheckbox { + isSaveCardsChecked || list.payment_type === SETUP_MANDATE + } else { + !(isGuestCustomer || list.payment_type === NORMAL) + } + }, (isSaveCardsChecked, list.payment_type)) diff --git a/src/Payments/CardPayment.res b/src/Payments/CardPayment.res index 8d3e68520..790ff4e5e 100644 --- a/src/Payments/CardPayment.res +++ b/src/Payments/CardPayment.res @@ -1,7 +1,5 @@ type target = {checked: bool} type event = {target: target} -open PaymentType -open PaymentModeType @react.component let make = ( @@ -12,7 +10,11 @@ let make = ( ~paymentType: CardThemeType.mode, ~list: PaymentMethodsRecord.list, ) => { + open PaymentType + open PaymentModeType open Utils + open UtilityHooks + let {config, themeObj, localeString} = Recoil.useRecoilValueFromAtom(RecoilAtoms.configAtom) let options = Recoil.useRecoilValueFromAtom(RecoilAtoms.optionAtom) let loggerState = Recoil.useRecoilValueFromAtom(RecoilAtoms.loggerAtom) @@ -81,13 +83,9 @@ let make = ( None }, [complete]) - UtilityHooks.useHandlePostMessages( - ~complete=complete && areRequiredFieldsValid, - ~empty, - ~paymentType="card", - ) + useHandlePostMessages(~complete=complete && areRequiredFieldsValid, ~empty, ~paymentType="card") - let isGuestCustomer = UtilityHooks.useIsGuestCustomer() + let isGuestCustomer = useIsGuestCustomer() let isCvcValidValue = CardUtils.getBoolOptionVal(isCVCValid) let (cardEmpty, cardComplete, cardInvalid) = CardUtils.useCardDetails( ~cvcNumber, @@ -95,13 +93,12 @@ let make = ( ~isCvcValidValue, ) - let isCustomerAcceptanceRequired = React.useMemo(() => { - if displaySavedPaymentMethodsCheckbox { - isSaveCardsChecked || list.payment_type === SETUP_MANDATE - } else { - !(isGuestCustomer || list.payment_type === NORMAL) - } - }, (isSaveCardsChecked, list.payment_type)) + let isCustomerAcceptanceRequired = useIsCustomerAcceptanceRequired( + ~displaySavedPaymentMethodsCheckbox, + ~isSaveCardsChecked, + ~list, + ~isGuestCustomer, + ) let submitCallback = React.useCallback((ev: Window.event) => { let json = ev.data->JSON.parseExn diff --git a/src/Utilities/PaymentBody.res b/src/Utilities/PaymentBody.res index cb5faa2e6..9ddae8ef2 100644 --- a/src/Utilities/PaymentBody.res +++ b/src/Utilities/PaymentBody.res @@ -98,6 +98,7 @@ let savedPaymentMethodBody = ( savedPaymentMethodBody } + let savedCardBody = ( ~paymentToken, ~customerId,