import { useState, useEffect, type FormEvent } from 'react'; import { useNavigate } from 'react-router'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { withdrawalApi } from '../api/withdrawals'; import { useCurrency } from '../hooks/useCurrency'; export default function ReferralWithdrawalRequest() { const { t } = useTranslation(); const navigate = useNavigate(); const queryClient = useQueryClient(); const { formatWithCurrency, currencySymbol } = useCurrency(); const [form, setForm] = useState({ amount_kopeks: 0, payment_details: '', }); const { data: balance } = useQuery({ queryKey: ['withdrawal-balance'], queryFn: withdrawalApi.getBalance, }); // Guard: redirect if can't request useEffect(() => { if (balance && !balance.can_request) { navigate('/referral', { replace: true }); } }, [balance, navigate]); const withdrawMutation = useMutation({ mutationFn: withdrawalApi.create, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['withdrawal-balance'] }); queryClient.invalidateQueries({ queryKey: ['withdrawal-history'] }); navigate('/referral'); }, }); const handleSubmit = (e: FormEvent) => { e.preventDefault(); if (form.payment_details.length < 5) return; if (form.amount_kopeks <= 0) return; withdrawMutation.mutate({ amount_kopeks: form.amount_kopeks, payment_details: form.payment_details, }); }; return (

{t('referral.withdrawal.requestTitle')}

{t('referral.withdrawal.requestDesc', { available: balance ? formatWithCurrency(balance.available_total / 100) : '', })}

setForm({ ...form, amount_kopeks: e.target.value ? Number(e.target.value) : 0, }) } placeholder={t('referral.withdrawal.fields.amountPlaceholder')} />

{t('referral.withdrawal.fields.amountHint', { currency: currencySymbol })}