import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' import { useNavigate } from 'react-router-dom' import { selectors } from '@/store' import { usePayment } from '@/payment' import { actions } from '@/store' import { ApplePayBanner, ApplePayButton, GooglePayBanner, GooglePayButton, CardButton, CardModal } from './methods' import ErrorModal from './ErrorModal' import UserHeader from '../UserHeader' import Title from '../Title' import Loader from '../Loader' import secure from './secure.png' import routes from '@/routes' import './styles.css' function PaymentPage(): JSX.Element { const { t } = useTranslation() const { applePay } = usePayment() const [openCardModal, setOpenCardModal] = useState(false) const [openErrorModal, setOpenErrorModal] = useState(false) const dispatch = useDispatch() const navigate = useNavigate() const isLoading = applePay === null const isApplePayAvailable = import.meta.env.PROD && applePay?.canMakePayments() const email = useSelector(selectors.selectEmail) const onSuccess = useCallback(() => { dispatch(actions.status.update('subscribed')) navigate(routes.client.wallpaper()) }, [dispatch, navigate]) const onError = useCallback((error: Error) => { console.error(error) setOpenErrorModal(true) }, []) return ( <> { isLoading ? : ( <> { isApplePayAvailable ? : } {t('choose_payment')} { isApplePayAvailable ? : } {t('or').toUpperCase()} setOpenCardModal(true)} /> {t('will_be_charged', { strongText: {t('trial_price')} })} setOpenCardModal(false)} onSuccess={onSuccess} onError={onError} /> setOpenErrorModal(false)} /> > )} > ) } export default PaymentPage
{t('will_be_charged', { strongText: {t('trial_price')} })}