import { CardForm, initStripe, InitStripeParams, PaymentIntent, useConfirmPayment, } from '@stripe/stripe-react-native' import React, { forwardRef, useCallback, useEffect, useImperativeHandle } from 'react' import styles from './styles' import { IStripePaymentProps, StripePaymentHandle } from './types' const StripePayment = forwardRef( (props, ref) => { const { confirmPayment, loading } = useConfirmPayment() const handleOnChangeConfirmPaymentLoading = useCallback( (isLoading: boolean) => { props.onChangeConfirmPaymentLoading?.(isLoading) }, [props] ) useEffect(() => { handleOnChangeConfirmPaymentLoading(loading) }, [handleOnChangeConfirmPaymentLoading, loading]) useImperativeHandle(ref, () => ({ async initStripe(params: InitStripeParams): Promise { return await initStripe(params) }, async confirmPayment( stripeClientSecret: string, params: PaymentIntent.ConfirmParams ): Promise { return await confirmPayment(stripeClientSecret, params) }, })) return ( ) } ) export default StripePayment