diff --git a/components/soutyen/checkout-form.js b/components/soutyen/checkout-form.js index 3dbd646..ae6fcd4 100644 --- a/components/soutyen/checkout-form.js +++ b/components/soutyen/checkout-form.js @@ -9,7 +9,7 @@ import {Button, Container, LinearProgress, Paper} from '@mui/material' const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:3001' -export default function CheckoutForm({prices, validMontant, setPaymentIsReady, setError, isLoading, setIsLoading}) { +export default function CheckoutForm({prices, validMontant, setError, isLoading, setIsLoading}) { const stripe = useStripe() const elements = useElements() const [isPaymentLoading, setIsPaymentLoading] = useState(false) @@ -42,7 +42,6 @@ export default function CheckoutForm({prices, validMontant, setPaymentIsReady, s const handleReady = () => { setIsLoading(false) - setPaymentIsReady(true) } return ( @@ -65,7 +64,6 @@ export default function CheckoutForm({prices, validMontant, setPaymentIsReady, s CheckoutForm.propTypes = { validMontant: PropTypes.string.isRequired, prices: PropTypes.array.isRequired, - setPaymentIsReady: PropTypes.func.isRequired, setError: PropTypes.func.isRequired, isLoading: PropTypes.bool.isRequired, setIsLoading: PropTypes.func.isRequired diff --git a/components/soutyen/payment-method.js b/components/soutyen/payment-method.js index 5ab8a36..aa76ac9 100644 --- a/components/soutyen/payment-method.js +++ b/components/soutyen/payment-method.js @@ -1,3 +1,4 @@ +import {useState} from 'react' import PropTypes from 'prop-types' import Tabs from '@mui/material/Tabs' import Tab from '@mui/material/Tab' @@ -12,7 +13,7 @@ import {Grid} from '@mui/material' import {appearance} from '../../lib/utils/stripe-style' import CheckoutForm from './checkout-form' -import StripePayment from './stripe-payment' +import StripeDialog from './stripe-dialog' const stripePromise = loadStripe( process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY @@ -54,7 +55,9 @@ function a11yProps(index) { } } -export default function PaymentMethod({isLoading, paymentMethod, setPaymentMethod, selectedMontant, setSelectedMontant, validMontant, setValidMontant, prices, paymentIntent, setClientSecret, setPaymentIntent, setIsLoading, setPaymentIsReady, setClientEmail, clientEmail, error, setError, clientSecret}) { +export default function PaymentMethod({isLoading, paymentMethod, setPaymentMethod, selectedMontant, setSelectedMontant, validMontant, setValidMontant, prices, paymentIntent, setClientSecret, setPaymentIntent, setIsLoading, setClientEmail, clientEmail, error, setError, clientSecret}) { + const [open, setOpen] = useState(false) + const options = { clientSecret, appearance, @@ -64,6 +67,14 @@ export default function PaymentMethod({isLoading, paymentMethod, setPaymentMetho setPaymentMethod(newValue) } + const handleClickOpen = () => { + setOpen(true) + } + + const handleClose = () => { + setOpen(false) + } + return ( @@ -74,7 +85,12 @@ export default function PaymentMethod({isLoading, paymentMethod, setPaymentMetho - + Faire un don par carte bancaire + + - - {clientSecret && validMontant && paymentMethod === 0 && ( - - - - )} + > + {clientSecret && validMontant && paymentMethod === 0 && ( + + + + )} + @@ -150,7 +164,6 @@ PaymentMethod.propTypes = { 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, diff --git a/components/soutyen/stripe-dialog.js b/components/soutyen/stripe-dialog.js new file mode 100644 index 0000000..b55de38 --- /dev/null +++ b/components/soutyen/stripe-dialog.js @@ -0,0 +1,94 @@ +import Dialog from '@mui/material/Dialog' +import PropTypes from 'prop-types' +import DialogTitle from '@mui/material/DialogTitle' +import DialogContent from '@mui/material/DialogContent' +import useMediaQuery from '@mui/material/useMediaQuery' +import {useTheme} from '@mui/material/styles' + +import StripePayment from './stripe-payment' + +export default function StripeDialog({ + open, + handleClose, + selectedMontant, + setSelectedMontant, + validMontant, + setValidMontant, + prices, + paymentIntent, + setClientSecret, + setPaymentIntent, + setIsLoading, + setClientEmail, + clientEmail, + error, + setError, + isLoading, + children +}) { + const theme = useTheme() + const fullScreen = useMediaQuery(theme.breakpoints.down('md')) + + return ( +
+ + + {'Paiement par carte bancaire'} + + + + {children} + + +
+ ) +} + +StripeDialog.defaultProps = { + selectedMontant: null, + validMontant: null, + paymentIntent: null, + clientEmail: null, + error: null, + children: null +} + +StripeDialog.propTypes = { + open: PropTypes.bool.isRequired, + handleClose: PropTypes.func.isRequired, + isLoading: 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, + setClientEmail: PropTypes.func.isRequired, + clientEmail: PropTypes.string, + error: PropTypes.string, + setError: PropTypes.func.isRequired, + children: PropTypes.node +} diff --git a/pages/soutyen.js b/pages/soutyen.js index 33659c8..e7b3060 100644 --- a/pages/soutyen.js +++ b/pages/soutyen.js @@ -27,14 +27,9 @@ export default function Soutyen({prices, paymentStatus}) { const [success, setSuccess] = useState(null) const [error, setError] = useState(null) const [open, setOpen] = useState(false) - const [payementIsReady, setPaymentIsReady] = useState(false) const [isLoading, setIsLoading] = useState(false) const [clientEmail, setClientEmail] = useState('') - const scrollToBottom = () => { - scrollEvent.current?.scrollIntoView({behavior: 'smooth', block: 'end', inline: 'nearest'}) - } - useEffect(() => { const getClientSecret = async () => { try { @@ -118,18 +113,6 @@ export default function Soutyen({prices, paymentStatus}) { useEffect(() => {}, [router.query.payment_intent]) - useEffect(() => { - if (validMontant) { - scrollToBottom() - } - }, [validMontant]) - - useEffect(() => { - if (payementIsReady) { - scrollToBottom() - } - }, [payementIsReady]) - return (