import { useState } from 'react'; import { useQuery } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { referralApi } from '../api/referral'; import { brandingApi } from '../api/branding'; import { useCurrency } from '../hooks/useCurrency'; const CopyIcon = () => ( ); const CheckIcon = () => ( ); const ShareIcon = () => ( ); export default function Referral() { const { t } = useTranslation(); const { formatAmount, currencySymbol, formatPositive } = useCurrency(); const [copied, setCopied] = useState(false); const { data: info, isLoading } = useQuery({ queryKey: ['referral-info'], queryFn: referralApi.getReferralInfo, }); // Build referral link for cabinet registration const referralLink = info?.referral_code ? `${window.location.origin}/login?ref=${info.referral_code}` : ''; const { data: terms } = useQuery({ queryKey: ['referral-terms'], queryFn: referralApi.getReferralTerms, }); const { data: referralList } = useQuery({ queryKey: ['referral-list'], queryFn: () => referralApi.getReferralList({ per_page: 10 }), }); const { data: earnings } = useQuery({ queryKey: ['referral-earnings'], queryFn: () => referralApi.getReferralEarnings({ per_page: 10 }), }); const { data: branding } = useQuery({ queryKey: ['branding'], queryFn: brandingApi.getBranding, staleTime: 60000, }); const copyLink = () => { if (referralLink) { navigator.clipboard.writeText(referralLink); setCopied(true); setTimeout(() => setCopied(false), 2000); } }; const shareLink = () => { if (!referralLink) return; const shareText = t('referral.shareMessage', { percent: info?.commission_percent || 0, botName: branding?.name || import.meta.env.VITE_APP_NAME || 'Cabinet', }); if (navigator.share) { navigator .share({ title: t('referral.title'), text: shareText, url: referralLink, }) .catch(() => { // ignore cancellation errors }); return; } const telegramUrl = `https://t.me/share/url?url=${encodeURIComponent( referralLink, )}&text=${encodeURIComponent(shareText)}`; window.open(telegramUrl, '_blank', 'noopener,noreferrer'); }; if (isLoading) { return (
{t('referral.disabled')}
{t('referral.shareHint', { percent: info?.commission_percent || 0 })}