import Link from 'next/link'; import { redirect } from 'next/navigation'; import { createCustomer } from '@documenso/ee/server-only/stripe/create-customer'; import { getPortalSession } from '@documenso/ee/server-only/stripe/get-portal-session'; import { getRequiredServerComponentSession } from '@documenso/lib/next-auth/get-server-session'; import { getServerComponentFlag } from '@documenso/lib/server-only/feature-flags/get-server-component-feature-flag'; import { getSubscriptionByUserId } from '@documenso/lib/server-only/subscription/get-subscription-by-user-id'; import { SubscriptionStatus } from '@documenso/prisma/client'; import { Button } from '@documenso/ui/primitives/button'; import { LocaleDate } from '~/components/formatter/locale-date'; export default async function BillingSettingsPage() { const { user } = await getRequiredServerComponentSession(); const isBillingEnabled = await getServerComponentFlag('app_billing'); // Redirect if subscriptions are not enabled. if (!isBillingEnabled) { redirect('/settings/profile'); } const subscription = await getSubscriptionByUserId({ userId: user.id }).then(async (sub) => { if (sub) { return sub; } // If we don't have a customer record, create one as well as an empty subscription. return createCustomer({ user }); }); let billingPortalUrl = ''; if (subscription.customerId) { billingPortalUrl = await getPortalSession({ customerId: subscription.customerId, returnUrl: `${process.env.NEXT_PUBLIC_WEBAPP_URL}/settings/billing`, }); } return (
Your subscription is{' '}
{subscription.status !== SubscriptionStatus.INACTIVE ? 'active' : 'inactive'}.
{subscription?.periodEnd && (
<>
{' '}
Your next payment is due on{' '}
You do not currently have a customer record, this should not happen. Please contact support for assistance.
)}