import { useState, useEffect } from 'react'; import { useParams, useNavigate, useLocation } from 'react-router'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { partnerApi } from '../api/partners'; import { AdminBackButton } from '../components/admin'; export default function AdminPartnerCommission() { const { t } = useTranslation(); const { userId } = useParams<{ userId: string }>(); const navigate = useNavigate(); const location = useLocation(); const queryClient = useQueryClient(); // Try to get current commission from navigate state const passedCommission = (location.state as { currentCommission?: number } | null) ?.currentCommission; const { data: partner } = useQuery({ queryKey: ['admin-partner-detail', userId], queryFn: () => partnerApi.getPartnerDetail(Number(userId)), enabled: passedCommission === undefined && !!userId, }); const currentCommission = passedCommission ?? partner?.commission_percent ?? 0; const [commissionValue, setCommissionValue] = useState(String(currentCommission)); // Sync commission value when data loads asynchronously useEffect(() => { if (partner?.commission_percent != null && passedCommission === undefined) { setCommissionValue(String(partner.commission_percent)); } }, [partner?.commission_percent, passedCommission]); const updateMutation = useMutation({ mutationFn: (commission: number) => partnerApi.updateCommission(Number(userId), commission), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['admin-partner-detail', userId] }); queryClient.invalidateQueries({ queryKey: ['admin-partners'] }); navigate(`/admin/partners/${userId}`); }, }); return (
{t('admin.partnerDetail.commissionDialog.description')}