'use client' import { useState, useEffect, Suspense } from 'react' import AuthModal from './AuthModal' import { useI18n } from '@/lib/i18n' interface UnlockModalProps { isOpen: boolean onClose: () => void } interface User { id: number username: string email: string } interface ReferralStatus { referralCount: number isUnlocked: boolean referralsNeeded: number referralsRemaining: number } export default function UnlockModal({ isOpen, onClose }: UnlockModalProps) { const { t } = useI18n() const [referralStatus, setReferralStatus] = useState(null) const [referralLink, setReferralLink] = useState('') const [loading, setLoading] = useState(true) const [copied, setCopied] = useState(false) const [showAuthModal, setShowAuthModal] = useState(false) useEffect(() => { if (isOpen) { fetchReferralData() } }, [isOpen]) const fetchReferralData = async () => { setLoading(true) try { // Fetch referral status const statusResponse = await fetch('/api/referrals/status', { credentials: 'include', }) const statusData = await statusResponse.json() setReferralStatus(statusData) // Fetch referral link if user is logged in const linkResponse = await fetch('/api/referrals/link', { credentials: 'include', }) if (linkResponse.ok) { const linkData = await linkResponse.json() setReferralLink(linkData.referralLink) } } catch (error) { console.error('Error fetching referral data:', error) } finally { setLoading(false) } } const handleCopyLink = async () => { if (!referralLink) return try { await navigator.clipboard.writeText(referralLink) setCopied(true) setTimeout(() => setCopied(false), 2000) } catch (error) { console.error('Failed to copy link:', error) } } const handleLogin = async (user: User) => { setShowAuthModal(false) // Refresh referral data after login await fetchReferralData() } if (!isOpen) return null const status = referralStatus || { referralCount: 0, isUnlocked: false, referralsNeeded: 3, referralsRemaining: 3, } return (
e.stopPropagation()} >

{t('unlockModal.title')}

{loading ? (

{t('common.loading')}

) : ( <>
🔒 {t('unlockModal.referralsCompleted', { count: status.referralCount, needed: status.referralsNeeded })}

{t('unlockModal.inviteFriends', { needed: status.referralsNeeded })}
{t('unlockModal.unlockForever')}

{referralLink ? (
) : (

{t('unlockModal.yourReferralLink')}

)}
{t('unlockModal.friendsMustSignUp')}
{status.referralsRemaining === 1 ? t('unlockModal.referralsToGoSingular', { remaining: status.referralsRemaining }) : t('unlockModal.referralsToGoPlural', { remaining: status.referralsRemaining }) }
)}
{/* Auth Modal */} setShowAuthModal(false)} onLogin={handleLogin} />
) }