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 })}