import {Navigate, useParams} from 'react-router-dom'; import {Trans} from '../../i18n/trans'; import {CheckoutLayout} from './checkout-layout'; import {CheckoutProductSummary} from './checkout-product-summary'; import {usePaypal} from './paypal/use-paypal'; import {StripeElementsForm} from './stripe/stripe-elements-form'; import {Fragment} from 'react'; import {useProducts} from '../pricing-table/use-products'; import {FullPageLoader} from '../../ui/progress/full-page-loader'; import {useSettings} from '../../core/settings/use-settings'; export function Checkout() { const {productId, priceId} = useParams(); const productQuery = useProducts(); const {paypalElementRef} = usePaypal({ productId, priceId, }); const { base_url, billing: {stripe}, } = useSettings(); if (productQuery.isLoading) { return ; } const product = productQuery.data?.products.find( p => p.id === parseInt(productId!) ); const price = product?.prices.find(p => p.id === parseInt(priceId!)); // make sure product and price exists in backend if (!product || !price || productQuery.status === 'error') { return ; } return (

{stripe.enable ? ( } type="subscription" returnUrl={`${base_url}/checkout/${productId}/${priceId}/stripe/done`} /> ) : null}
); } function Separator() { return (
); }