'use client'; import useGlobalStore from '@/config/use-global'; import { checkoutOrder, recharge } from '@/services/user/order'; import { getAvailablePaymentMethods } from '@/services/user/payment'; import { useQuery } from '@tanstack/react-query'; import { Button, ButtonProps } from '@workspace/ui/components/button'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from '@workspace/ui/components/dialog'; import { Label } from '@workspace/ui/components/label'; import { RadioGroup, RadioGroupItem } from '@workspace/ui/components/radio-group'; import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { unitConversion } from '@workspace/ui/utils'; import { LoaderCircle } from 'lucide-react'; import { useTranslations } from 'next-intl'; import Image from 'next/image'; import { useRouter } from 'next/navigation'; import { useEffect, useState, useTransition } from 'react'; export default function Recharge(props: ButtonProps) { const t = useTranslations('subscribe'); const { common } = useGlobalStore(); const { currency } = common; const router = useRouter(); const [open, setOpen] = useState(false); const [loading, startTransition] = useTransition(); const [params, setParams] = useState({ amount: 0, payment: '', }); const { data: paymentMethods } = useQuery({ queryKey: ['getAvailablePaymentMethods'], queryFn: async () => { const { data } = await getAvailablePaymentMethods(); return data.data?.list || []; }, }); useEffect(() => { if (paymentMethods?.length) { setParams((prev) => ({ ...prev, payment: paymentMethods.find((item) => item.mark !== 'balance')?.mark as string, })); } }, [paymentMethods]); return ( {t('balanceRecharge')} {t('rechargeDescription')}
{t('rechargeAmount')}
unitConversion('centsToDollars', value)} formatOutput={(value) => unitConversion('dollarsToCents', value)} onValueChange={(value) => { setParams((prev) => ({ ...prev, amount: value as number, })); }} prefix={currency.currency_symbol} suffix={currency.currency_unit} />
{t('paymentMethod')}
{ setParams({ ...params, payment: value, }); }} > {paymentMethods ?.filter((item) => item.mark !== 'balance') ?.map((item) => { return (
); })}
); }