import { useState, useEffect, type SyntheticEvent } from 'react'; import { useNavigate } from 'react-router'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { partnerApi, type PartnerApplicationRequest } from '../api/partners'; export default function ReferralPartnerApply() { const { t } = useTranslation(); const navigate = useNavigate(); const queryClient = useQueryClient(); const [form, setForm] = useState({ company_name: '', website_url: '', telegram_channel: '', description: '', expected_monthly_referrals: undefined, desired_commission_percent: undefined, }); // Guard: redirect if already approved or pending const { data: partnerStatus } = useQuery({ queryKey: ['partner-status'], queryFn: partnerApi.getStatus, }); useEffect(() => { if ( partnerStatus?.partner_status === 'approved' || partnerStatus?.partner_status === 'pending' ) { navigate('/referral', { replace: true }); } }, [partnerStatus, navigate]); const applyMutation = useMutation({ mutationFn: partnerApi.apply, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['partner-status'] }); navigate('/referral'); }, }); const handleSubmit = (e: SyntheticEvent) => { e.preventDefault(); const payload: PartnerApplicationRequest = {}; if (form.company_name) payload.company_name = form.company_name; if (form.website_url) payload.website_url = form.website_url; if (form.telegram_channel) payload.telegram_channel = form.telegram_channel; if (form.description) payload.description = form.description; if (form.expected_monthly_referrals) { payload.expected_monthly_referrals = form.expected_monthly_referrals; } if (form.desired_commission_percent) { payload.desired_commission_percent = form.desired_commission_percent; } applyMutation.mutate(payload); }; return (

{t('referral.partner.applyTitle')}

{t('referral.partner.applyDesc')}

setForm({ ...form, company_name: e.target.value })} placeholder={t('referral.partner.fields.companyNamePlaceholder')} />
setForm({ ...form, telegram_channel: e.target.value })} placeholder={t('referral.partner.fields.telegramChannelPlaceholder')} />
setForm({ ...form, website_url: e.target.value })} placeholder={t('referral.partner.fields.websiteUrlPlaceholder')} />