import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import { Group, GroupFormData, Server } from '@/types' import { useGroupData } from '@/hooks/useGroupData' import { useServerData } from '@/hooks/useServerData' import { ToggleGroup } from './ui/ToggleGroup' interface EditGroupFormProps { group: Group onEdit: () => void onCancel: () => void } const EditGroupForm = ({ group, onEdit, onCancel }: EditGroupFormProps) => { const { t } = useTranslation() const { updateGroup } = useGroupData() const { servers } = 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(servers.filter(server => server.enabled !== false)) }, [servers]) const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target setFormData(prev => ({ ...prev, [name]: value })) } const handleServerToggle = (serverName: string) => { setFormData(prev => { const isSelected = prev.servers.includes(serverName) return { ...prev, servers: isSelected ? prev.servers.filter(name => name !== serverName) : [...prev.servers, serverName] } }) } 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) { setError(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}
)}
({ value: server.name, label: server.name }))} onChange={(servers) => setFormData(prev => ({ ...prev, servers }))} />
) } export default EditGroupForm