import { PermissionAction, SupportCategories } from '@supabase/shared-types/out/constants' import { useParams } from 'common' import { CreditCardIcon } from 'lucide-react' import Link from 'next/link' import { Button } from 'ui' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import CreditCard from './CreditCard' import { SupportLink } from '@/components/interfaces/Support/SupportLink' import { useOrganizationPaymentMethodsQuery } from '@/data/organizations/organization-payment-methods-query' import { useOrgSubscriptionQuery } from '@/data/subscriptions/org-subscription-query' import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions' const CurrentPaymentMethod = () => { const { slug } = useParams() const { data: subscription, isPending: isLoadingSubscription, isError: isErrorSubscription, } = useOrgSubscriptionQuery({ orgSlug: slug, }) const { data: paymentMethods, isPending: isLoadingOrganizationPaymentMethods, isError: isErrorOrganizationPaymentMethods, } = useOrganizationPaymentMethodsQuery({ slug }) const isLoading = isLoadingSubscription || isLoadingOrganizationPaymentMethods const isError = isErrorSubscription || isErrorOrganizationPaymentMethods const defaultPaymentMethod = paymentMethods?.data.find((pm) => pm.is_default) const { can: canReadPaymentMethods } = useAsyncCheckPermissions( PermissionAction.BILLING_READ, 'stripe.payment_methods' ) // since this component is an enhancement, // if it can't read payment methods, we will just not show it if (!canReadPaymentMethods || isError) return null return (
{isLoading ? ( ) : subscription?.payment_method_type === 'invoice' ? (

You get a monthly invoice and payment link via email. To change your payment method, please contact us via our support form.

) : !defaultPaymentMethod ? (

No payment methods

) : ( )}
) } export default CurrentPaymentMethod