'use client'; import { useState, useEffect } from 'react'; import { getReferralProfile, getReferralStats, getMyReferrals, type MyReferralItem } from '@/api/referrals'; import { LoadingSpinner } from '@/components/common/LoadingSpinner'; import { useToast } from '@/contexts/ToastContext'; const formatCurrency = (v: number) => new Intl.NumberFormat('ru-RU', { style: 'currency', currency: 'RUB', maximumFractionDigits: 0 }).format(v); function formatDate(s: string) { try { return new Date(s).toLocaleDateString('ru-RU', { day: '2-digit', month: '2-digit', year: 'numeric' }); } catch { return s; } } export function ReferralsPageContent() { const { showToast } = useToast(); const [profile, setProfile] = useState(null); const [stats, setStats] = useState(null); const [referralsList, setReferralsList] = useState<{ direct: MyReferralItem[]; indirect: MyReferralItem[] } | null>(null); const [loading, setLoading] = useState(true); const [copied, setCopied] = useState(false); useEffect(() => { Promise.all([ getReferralProfile().then(setProfile), getReferralStats().then(setStats), getMyReferrals().then(setReferralsList).catch(() => setReferralsList({ direct: [], indirect: [] })), ]) .finally(() => setLoading(false)); }, []); const copyLink = () => { if (profile?.referral_link) { navigator.clipboard.writeText(profile.referral_link); setCopied(true); showToast('Реферальная ссылка скопирована', 'success'); setTimeout(() => setCopied(false), 2000); } }; if (loading) { return ; } if (!profile) { return (

Реферальная программа недоступна

); } return (
РЕФЕРАЛЬНАЯ ССЫЛКА
{profile.referral_code && (

Код: {profile.referral_code}

)}
{stats && (
Уровень
{stats.current_level?.name || '-'}
Баллы
{stats.total_points ?? 0}
Рефералов
{stats.referrals?.total ?? 0}
Заработано
{formatCurrency(stats.earnings?.total ?? stats.bonus_account?.balance ?? 0)}
)} {/* Список приглашённых рефералов */} {referralsList && (referralsList.direct.length > 0 || referralsList.indirect.length > 0) && (
ПРИГЛАШЁННЫЕ
{referralsList.direct.length > 0 && (
Прямые рефералы ({referralsList.direct.length})
    {referralsList.direct.map((r: MyReferralItem, i: number) => (
  • {r.email} — {r.level}, {r.total_points} баллов, зарегистрирован {formatDate(r.created_at)}
  • ))}
)} {referralsList.indirect.length > 0 && (
Рефералы ваших рефералов ({referralsList.indirect.length})
    {referralsList.indirect.map((r: MyReferralItem, i: number) => (
  • {r.email} — {r.level}, {r.total_points} баллов, зарегистрирован {formatDate(r.created_at)}
  • ))}
)}
)} {referralsList && referralsList.direct.length === 0 && referralsList.indirect.length === 0 && (

Пока никого нет. Поделитесь реферальной ссылкой — когда кто-то зарегистрируется по ней, он появится здесь и вы получите уведомление.

)}
); }