import { useSubmit, Link } from "react-router"; import { useTranslation } from "react-i18next"; import type Stripe from "stripe"; import { PlanFeatureUsageDto } from "~/application/dtos/subscriptions/PlanFeatureUsageDto"; import MyBillingSession from "~/components/core/settings/subscription/MyBillingSession"; import MyInvoices from "~/components/core/settings/subscription/MyInvoices"; import MyPayments from "~/components/core/settings/subscription/MyPayments"; import MyProducts from "~/components/core/settings/subscription/MyProducts"; import MySubscriptionFeatures from "~/components/core/settings/subscription/MySubscriptionFeatures"; import MyUpcomingInvoice from "~/components/core/settings/subscription/MyUpcomingInvoice"; import SettingSection from "~/components/ui/sections/SettingSection"; import { TenantSubscriptionProductWithDetails } from "~/utils/db/subscriptions/tenantSubscriptionProducts.db.server"; import { TenantSubscriptionWithDetails } from "~/utils/db/tenantSubscriptions.db.server"; import { TenantSimple } from "~/utils/db/tenants.db.server"; import { subscriptionCheckoutPath } from "~/utils/app/SubscriptionUrlUtils"; import { useRootData } from "~/utils/data/useRootData"; export default function SubscriptionSettings({ currentTenant, mySubscription, myInvoices, myPayments, myFeatures, myUpcomingInvoices, permissions, }: { currentTenant: TenantSimple; mySubscription: TenantSubscriptionWithDetails | null; myInvoices: Stripe.Invoice[]; myPayments: Stripe.PaymentIntent[]; myFeatures: PlanFeatureUsageDto[]; myUpcomingInvoices: Stripe.Invoice[]; permissions: { viewInvoices: boolean; }; }) { const { t } = useTranslation(); const submit = useSubmit(); const { csrf } = useRootData(); function onCancel(item: TenantSubscriptionProductWithDetails) { const form = new FormData(); form.set("action", "cancel"); form.set("csrf", csrf ?? ""); form.set("tenant-subscription-product-id", item.id); submit(form, { method: "post", }); } // function onAddPaymentMethod() { // const form = new FormData(); // form.set("action", "add-payment-method"); // submit(form, { // method: "post", // }); // } function onOpenCustomerPortal() { const form = new FormData(); form.set("action", "open-customer-portal"); form.set("csrf", csrf ?? ""); submit(form, { method: "post", }); } return (