import type { IOmnichannelRoom } from '@rocket.chat/core-typings'; import { Button, Modal, Box, ModalHeader, ModalIcon, ModalTitle, ModalClose, ModalContent, ModalFooter, ModalFooterControllers, } from '@rocket.chat/fuselage'; import { Field, FieldGroup, FieldLabel, FieldRow, FieldError, TextInput } from '@rocket.chat/fuselage-forms'; import { useCallback, useEffect } from 'react'; import { useForm, Controller } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; export 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 = ({ email: emailDefault = '', room, onRequest, onSend, onCancel, onDiscard, ...props }: TranscriptModalProps) => { const { t } = useTranslation(); const { control, handleSubmit, setValue, setFocus, formState: { errors, isSubmitting }, } = useForm({ defaultValues: { email: emailDefault || '', subject: t('Transcript_of_your_livechat_conversation') }, }); useEffect(() => { setFocus('subject'); }, [setFocus]); const { transcriptRequest } = room; const roomOpen = room?.open; const token = room?.v?.token; const handleDiscard = useCallback(() => onDiscard(), [onDiscard]); const submit = useCallback( ({ email, subject }: { email: string; subject: string }) => { if (roomOpen && !transcriptRequest) { onRequest(email, subject); } if (!roomOpen && onSend && token) { onSend(email, subject, token); } }, [onRequest, onSend, roomOpen, token, transcriptRequest], ); useEffect(() => { if (transcriptRequest) { setValue('email', transcriptRequest.email); setValue('subject', transcriptRequest.subject); } }, [setValue, transcriptRequest]); return ( } {...props}> {t('Transcript')} {!!transcriptRequest &&

{t('Livechat_transcript_already_requested_warning')}

} {t('Email')} ( )} /> {errors.email && {errors.email?.message}} {t('Subject')} ( )} /> {errors.subject && {errors.subject?.message}}
{roomOpen && transcriptRequest && ( )} {roomOpen && !transcriptRequest && ( )} {!roomOpen && ( )}
); }; export default TranscriptModal;