import { useState } from 'react' import { Form, Input, Button, Space } from 'antd' import { apiService } from '../services/api' import { useMediaQuery } from 'react-responsive' import { useTranslation } from 'react-i18next' import { isValidWalletAddress } from '../utils' interface LeaderAddFormProps { form: any onSuccess?: (leaderId: number) => void onCancel?: () => void showCancelButton?: boolean } const LeaderAddForm: React.FC = ({ form, onSuccess, onCancel, showCancelButton = true }) => { const { t } = useTranslation() const isMobile = useMediaQuery({ maxWidth: 768 }) const [loading, setLoading] = useState(false) const handleSubmit = async (values: any) => { setLoading(true) try { const response = await apiService.leaders.add({ leaderAddress: values.leaderAddress.trim(), leaderName: values.leaderName?.trim() || undefined, remark: values.remark?.trim() || undefined, website: values.website?.trim() || undefined }) if (response.data.code === 0) { if (response.data.data && onSuccess) { onSuccess(response.data.data.id) } return Promise.resolve() } else { return Promise.reject(new Error(response.data.msg || t('leaderAdd.addFailed') || '添加 Leader 失败')) } } catch (error: any) { return Promise.reject(error) } finally { setLoading(false) } } return (
{ if (!value) { return Promise.reject(new Error(t('leaderAdd.leaderAddressRequired') || '请输入 Leader 钱包地址')) } if (!isValidWalletAddress(value.trim())) { return Promise.reject(new Error(t('leaderAdd.leaderAddressInvalid') || '钱包地址格式不正确(必须是 0x 开头的 42 位地址)')) } return Promise.resolve() } } ]} tooltip={t('leaderAdd.leaderAddressTooltip') || '被跟单者的钱包地址,系统将监控该地址的交易并自动跟单'} > {showCancelButton && onCancel && ( )}
) } export default LeaderAddForm