import PropTypes from 'prop-types' import {Container, Stack, Typography} from '@mui/material' import axios from 'axios' import Button from '@mui/material/Button' import Box from '@mui/material/Box' import {Paypal} from '@icons-pack/react-simple-icons' import {validateEmail} from '../../lib/utils/emails' import Montant from './montant' import Email from './email' const PAYPAL_ID = process.env.NEXT_PUBLIC_PAYPAL_DONATE_ID export default function Don({isPaypal, selectedMontant, setSelectedMontant, validMontant, setValidMontant, prices, paymentIntent, setClientSecret, setPaymentIntent, setIsLoading, setPaymentIsReady, setClientEmail, clientEmail, error, setError}) { const cancelPayment = async () => { setPaymentIsReady(false) setClientEmail('') setIsLoading(false) setClientSecret(null) try { await axios.post('/stripe/cancel-payment', { paymentIntent }) setPaymentIntent(null) } catch (error_) { console.log(error_.message) } } const handleCancel = async () => { setValidMontant(null) setSelectedMontant(null) await cancelPayment() } const handleClick = () => { if (!clientEmail) { setError('Adresse e-mail obligatoire.') return } if (!validateEmail(clientEmail)) { setError('Adresse e-mail invalide.') return } setIsLoading(true) setValidMontant(selectedMontant) } return ( {isPaypal ? ( <> PayPal ) : ( <> Carte bancaire {validMontant && ( )} )} ) } Don.defaultProps = { selectedMontant: null, validMontant: null, paymentIntent: null, clientEmail: null, error: null } Don.propTypes = { isPaypal: PropTypes.bool.isRequired, selectedMontant: PropTypes.string, setSelectedMontant: PropTypes.func.isRequired, validMontant: PropTypes.string, setValidMontant: PropTypes.func.isRequired, prices: PropTypes.array.isRequired, paymentIntent: PropTypes.string, setClientSecret: PropTypes.func.isRequired, setPaymentIntent: PropTypes.func.isRequired, setIsLoading: PropTypes.func.isRequired, setPaymentIsReady: PropTypes.func.isRequired, setClientEmail: PropTypes.func.isRequired, clientEmail: PropTypes.string, error: PropTypes.string, setError: PropTypes.func.isRequired }