import { Trans, useTranslation } from 'react-i18next' import { PaidSubscription } from '../../../../../../types/subscription/dashboard/subscription' import { PausedSubscription } from './states/active/paused' import { ActiveSubscriptionNew } from '@/features/subscription/components/dashboard/states/active/active-new' import { CanceledSubscription } from './states/canceled' import { ExpiredSubscription } from './states/expired' import { useSubscriptionDashboardContext } from '../../context/subscription-dashboard-context' import PersonalSubscriptionRecurlySyncEmail from './personal-subscription-recurly-sync-email' import OLNotification from '@/features/ui/components/ol/ol-notification' function PastDueSubscriptionAlert({ subscription, }: { subscription: PaidSubscription }) { const { t } = useTranslation() return ( {t('account_has_past_due_invoice_change_plan_warning')}{' '} {t('view_your_invoices')} } /> ) } function RedirectAlerts() { const queryParams = new URLSearchParams(window.location.search) const redirectReason = queryParams.get('redirect-reason') const { t } = useTranslation() if (!redirectReason) { return null } let warning if (redirectReason === 'writefull-entitled') { warning = t('good_news_you_are_already_receiving_this_add_on_via_writefull') } else if (redirectReason === 'double-buy') { warning = t('good_news_you_already_purchased_this_add_on') } else { return null } return {warning}} /> } function PersonalSubscriptionStates({ subscription, }: { subscription: PaidSubscription }) { const { t } = useTranslation() const state = subscription?.payment.state if (state === 'active') { // This version handles subscriptions with and without addons return } else if (state === 'canceled') { return } else if (state === 'expired') { return } else if (state === 'paused') { return } else { return <>{t('problem_with_subscription_contact_us')} } } function PersonalSubscription() { const { t } = useTranslation() const { personalSubscription, recurlyLoadError } = useSubscriptionDashboardContext() if (!personalSubscription) return null if (!('payment' in personalSubscription)) { return (

]} // eslint-disable-line react/jsx-key, jsx-a11y/anchor-has-content />

) } return ( <> {personalSubscription.payment.hasPastDueInvoice && ( )} {recurlyLoadError && ( {t('payment_provider_unreachable_error')}} /> )}
) } export default PersonalSubscription