import { Box, TextInput, Icon } from '@rocket.chat/fuselage'; import { useAutoFocus } from '@rocket.chat/fuselage-hooks'; import React, { ReactElement, useState, ChangeEvent } from 'react'; import { useEndpoint } from '../../contexts/ServerContext'; import { useToastMessageDispatch } from '../../contexts/ToastMessagesContext'; import { useTranslation } from '../../contexts/TranslationContext'; import GenericModal from '../GenericModal'; import { Method, OnConfirm } from './TwoFactorModal'; type TwoFactorEmailModalProps = { onConfirm: OnConfirm; onClose: () => void; emailOrUsername: string; }; const TwoFactorEmailModal = ({ onConfirm, onClose, emailOrUsername }: TwoFactorEmailModalProps): ReactElement => { const dispatchToastMessage = useToastMessageDispatch(); const t = useTranslation(); const [code, setCode] = useState(''); const ref = useAutoFocus(); const sendEmailCode = useEndpoint('POST', 'users.2fa.sendEmailCode'); const onClickResendCode = async (): Promise => { try { await sendEmailCode({ emailOrUsername }); dispatchToastMessage({ type: 'success', message: t('Email_sent') }); } catch (error) { dispatchToastMessage({ type: 'error', message: t('error-email-send-failed', { message: error }), }); } }; const onConfirmEmailCode = (): void => { onConfirm(code, Method.EMAIL); }; const onChange = ({ currentTarget }: ChangeEvent): void => { setCode(currentTarget.value); }; return ( } confirmDisabled={!code} > {t('Verify_your_email_for_the_code_we_sent')} {t('Cloud_resend_email')} ); }; export default TwoFactorEmailModal;