import { Box, PasswordInput, TextInput, FieldGroup, Field, FieldRow, FieldError, FieldLabel } from '@rocket.chat/fuselage'; import { GenericModal } from '@rocket.chat/ui-client'; import { useId } from 'react'; import { useForm, Controller } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; export type ActionConfirmModalProps = { isPassword: boolean; onConfirm: (input: string) => Promise; onCancel: () => void; }; const ActionConfirmModal = ({ isPassword, onConfirm, onCancel }: ActionConfirmModalProps) => { const { t } = useTranslation(); const credentialFieldId = useId(); const credentialFieldError = `${credentialFieldId}-error`; const { control, handleSubmit, setError, formState: { errors }, } = useForm({ defaultValues: { credential: '' }, mode: 'onBlur', }); const handleSave = async ({ credential }: { credential: string }) => { try { await onConfirm(credential); } catch (error: any) { if (error.errorType === 'error-invalid-password') { setError('credential', { message: t('Invalid_password') }); } } }; return ( } onCancel={onCancel} variant='danger' title={t('Delete_account?')} confirmText={t('Delete_account')} > {isPassword ? t('Enter_your_password_to_delete_your_account') : t('Enter_your_username_to_delete_your_account')} isPassword ? ( ) : ( ) } /> {errors.credential && ( {errors.credential.message} )} ); }; export default ActionConfirmModal;