'use client' import { fetchReferralUserStats } from '@/app/actions/referralsActions'; import { useQuery } from '@tanstack/react-query'; import { useTranslations } from 'next-intl'; import { useEffect, useRef, useState } from 'react'; import { toast } from 'sonner'; export default function ReferralLinkSection() { const { data: referralUserStats, isLoading, isError, error } = useQuery({ queryKey: ['referralUserStats'], queryFn: () => { return fetchReferralUserStats(); }, select: (data) => { return data; } }); const t = useTranslations('Global') const [referralUrl, setReferralUrl] = useState(''); const refLink = useRef(null); useEffect(() => { if (typeof window !== 'undefined') { setReferralUrl(`${window.location.origin}/register?ref=${referralUserStats?.referralLink}`); } }, [referralUserStats]); const copyHandler = async () => { if (!refLink.current?.textContent) return; const textToCopy = refLink.current.textContent; if (typeof window === 'undefined' || !navigator.clipboard) { console.warn('Clipboard API не доступен'); const success = fallbackCopy(textToCopy); if (success) { toast.success(`${t('copied')}: ${textToCopy}`); } else { toast.error('Не удалось скопировать'); } return; } try { await navigator.clipboard.writeText(textToCopy); toast.success(`${t('copied')}: ${textToCopy}`); } catch (err) { console.error('Ошибка копирования:', err); const success = fallbackCopy(textToCopy); if (success) { toast.success(`${t('copied')}: ${textToCopy}`); } else { toast.error('Не удалось скопировать'); } } }; const fallbackCopy = (text: string) => { try { const textArea = document.createElement('textarea'); textArea.value = text; textArea.style.position = 'fixed'; textArea.style.left = '-999999px'; textArea.style.top = '-999999px'; document.body.appendChild(textArea); textArea.select(); textArea.setSelectionRange(0, 99999); const successful = document.execCommand('copy'); document.body.removeChild(textArea); return successful; } catch (err) { console.error('Fallback copy failed:', err); return false; } }; if (!referralUserStats?.referralLink) { return null; } return (

Ваша реферальная ссылка

Поделитесь этой ссылкой с друзьями и получайте комиссию с каждой их покупки

{referralUrl}

Код: {referralUserStats?.referralLink} • Приглашений: {referralUserStats?.totalInvitee}

) }