import { Field, Button, TextInput, Icon, ButtonGroup, Modal } from '@rocket.chat/fuselage'; import { useAutoFocus } from '@rocket.chat/fuselage-hooks'; import React, { FC, useCallback, useEffect, useState, useMemo } from 'react'; import { IOmnichannelRoom } from '../../../../definition/IRoom'; import { useTranslation } from '../../../contexts/TranslationContext'; import { useComponentDidUpdate } from '../../../hooks/useComponentDidUpdate'; import { useForm } from '../../../hooks/useForm'; type TranscriptModalProps = { email: string; room: IOmnichannelRoom; onRequest: (email: string, subject: string) => void; onSend?: (email: string, subject: string, token: string) => void; onCancel: () => void; onDiscard: () => void; }; const TranscriptModal: FC = ({ email: emailDefault = '', room, onRequest, onSend, onCancel, onDiscard, ...props }) => { const t = useTranslation(); const inputRef = useAutoFocus(true); const { values, handlers } = useForm({ email: emailDefault || '', subject: t('Transcript_of_your_livechat_conversation'), }); const { email, subject } = values as { email: string; subject: string }; const { handleEmail, handleSubject } = handlers; const [emailError, setEmailError] = useState(''); const [subjectError, setSubjectError] = useState(''); const { transcriptRequest } = room; const roomOpen = room?.open; const token = room?.v?.token; const handleRequest = useCallback(() => { onRequest(email, subject); }, [email, onRequest, subject]); const handleSend = useCallback(() => { onSend && token && onSend(email, subject, token); }, [email, onSend, subject, token]); const handleDiscard = useCallback(() => onDiscard(), [onDiscard]); useComponentDidUpdate(() => { setEmailError(!email ? t('The_field_is_required', t('Email')) : ''); }, [t, email]); useComponentDidUpdate(() => { setSubjectError(!subject ? t('The_field_is_required', t('Subject')) : ''); }, [t, subject]); const canSave = useMemo(() => !!subject, [subject]); useEffect(() => { if (transcriptRequest) { handleEmail(transcriptRequest.email); handleSubject(transcriptRequest.subject); } }); return ( {t('Transcript')} {!!transcriptRequest &&

{t('Livechat_transcript_already_requested_warning')}

} {t('Email')}* {emailError} {t('Subject')}* {subjectError}
{roomOpen && transcriptRequest ? ( ) : ( )} {!roomOpen && ( )}
); }; export default TranscriptModal;