import { useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { Group, GroupFormData, Server, IGroupServerConfig } from '@/types'; import { useGroupData } from '@/hooks/useGroupData'; import { useServerData } from '@/hooks/useServerData'; import { ServerToolConfig } from './ServerToolConfig'; interface EditGroupFormProps { group: Group; onEdit: () => void; onCancel: () => void; } const EditGroupForm = ({ group, onEdit, onCancel }: EditGroupFormProps) => { const { t } = useTranslation(); const { updateGroup } = useGroupData(); const { allServers } = useServerData(); const [availableServers, setAvailableServers] = useState([]); const [error, setError] = useState(null); const [isSubmitting, setIsSubmitting] = useState(false); const [formData, setFormData] = useState({ name: group.name, description: group.description || '', servers: group.servers || [], }); useEffect(() => { // Filter available servers (enabled only) setAvailableServers(allServers.filter((server) => server.enabled !== false)); }, [allServers]); const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value, })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsSubmitting(true); setError(null); try { if (!formData.name.trim()) { setError(t('groups.nameRequired')); setIsSubmitting(false); return; } const result = await updateGroup(group.id, { name: formData.name, description: formData.description, servers: formData.servers, }); if (!result || !result.success) { setError(result?.message || t('groups.updateError')); setIsSubmitting(false); return; } onEdit(); } catch (err) { setError(err instanceof Error ? err.message : String(err)); setIsSubmitting(false); } }; return (

{t('groups.edit')}

{error && (
{error}
)}
setFormData((prev) => ({ ...prev, servers }))} className="border border-gray-200 rounded-lg p-4 bg-gray-50" />
); }; export default EditGroupForm;