import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useUserData } from '@/hooks/useUserData'; import { User, UserUpdateData } from '@/types'; interface EditUserFormProps { user: User; onEdit: () => void; onCancel: () => void; } const EditUserForm = ({ user, onEdit, onCancel }: EditUserFormProps) => { const { t } = useTranslation(); const { updateUser } = useUserData(); const [error, setError] = useState(null); const [isSubmitting, setIsSubmitting] = useState(false); const [formData, setFormData] = useState({ isAdmin: user.isAdmin, newPassword: '', confirmPassword: '', }); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); // Validate passwords match if changing password if (formData.newPassword && formData.newPassword !== formData.confirmPassword) { setError(t('users.passwordMismatch')); return; } if (formData.newPassword && formData.newPassword.length < 6) { setError(t('users.passwordTooShort')); return; } setIsSubmitting(true); try { const updateData: UserUpdateData = { isAdmin: formData.isAdmin, }; if (formData.newPassword) { updateData.newPassword = formData.newPassword; } const result = await updateUser(user.username, updateData); if (result?.success) { onEdit(); } else { setError(result?.message || t('users.updateError')); } } catch (err) { setError(err instanceof Error ? err.message : t('users.updateError')); } finally { setIsSubmitting(false); } }; const handleInputChange = (e: React.ChangeEvent) => { const { name, value, type, checked } = e.target; setFormData((prev) => ({ ...prev, [name]: type === 'checkbox' ? checked : value, })); }; return (

{t('users.edit')} - {user.username}

{error && (

{error}

)}

{t('users.changePassword')}

{formData.newPassword && (
)}
); }; export default EditUserForm;