'use client' import type { AdminEventDetailData } from './types' import { useEffect, useState } from 'react' import Button from '@/components/formElements/Button' import Input from '@/components/formElements/Input' import Modal from '@/components/modals/Modal' import { coerceToString } from '@/helpers' import { updateEventCommissionAsAdmin } from '@/services/events' import useAdminAction from '@/hooks/useAdminAction' import useAlertModal from '@/hooks/useAlertModal' interface AdminEventCommissionModalProps { eventId: string commissionPercent: number | null | undefined isOpen: boolean onOpenChange: (open: boolean) => void onUpdated: (updated: AdminEventDetailData) => void } const AdminEventCommissionModal = ({ eventId, commissionPercent, isOpen, onOpenChange, onUpdated }: AdminEventCommissionModalProps) => { const [commissionInput, setCommissionInput] = useState('') const [commissionError, setCommissionError] = useState(null) const { pendingId, runAction } = useAdminAction() const { showAlert } = useAlertModal() useEffect(() => { if (!isOpen) return setCommissionInput(commissionPercent != null ? String(commissionPercent) : '') setCommissionError(null) }, [isOpen, commissionPercent]) const handleSaveCommission = () => { const trimmed = commissionInput.trim() const parsed = Number(trimmed) if (trimmed === '' || Number.isNaN(parsed) || parsed < 0 || parsed > 100) { setCommissionError('درصد کمیسیون باید عددی بین ۰ تا ۱۰۰ باشد') return } showAlert(`کمیسیون این رویداد به ${parsed}٪ تغییر کند؟`, () => runAction( 'commission', async () => { const updated = (await updateEventCommissionAsAdmin(eventId, parsed)) as AdminEventDetailData onUpdated(updated) onOpenChange(false) }, 'کمیسیون رویداد به‌روزرسانی شد' ) ) } const handleResetCommission = () => { showAlert('کمیسیون این رویداد به پیش‌فرض پلتفرم بازگردد؟', () => runAction( 'commission', async () => { const updated = (await updateEventCommissionAsAdmin(eventId, null)) as AdminEventDetailData onUpdated(updated) onOpenChange(false) }, 'کمیسیون رویداد به پیش‌فرض پلتفرم بازگشت' ) ) } return ( {commissionPercent != null ? ( ) : ( )}
} isOpen={isOpen} title="ویرایش کمیسیون پلتفرم" onOpenChange={onOpenChange} >

درصد کمیسیونی که پلتفرم از این رویداد کسر می‌کند. با خالی گذاشتن این مقدار (بازگشت به پیش‌فرض)، رویداد از پیش‌فرض پلتفرم پیروی می‌کند.

{ setCommissionInput(coerceToString(value)) setCommissionError(null) }} /> {commissionError && {commissionError}}
) } export default AdminEventCommissionModal