import { Modal, Box, Field, FieldGroup, TextInput, ButtonGroup, Button, } from '@rocket.chat/fuselage'; import { useAutoFocus } from '@rocket.chat/fuselage-hooks'; import React, { ReactElement, memo, useState, ChangeEvent, FormEventHandler, useEffect, } from 'react'; import { useToastMessageDispatch } from '../../../contexts/ToastMessagesContext'; import { useTranslation } from '../../../contexts/TranslationContext'; import FilePreview from './FilePreview'; type FilePreviewModalProps = { onClose: () => void; onSubmit: (name: string, description?: string) => void; file: File; fileName: string; isValidContentType: boolean; }; const FilePreviewModal = ({ onClose, file, fileName, onSubmit, isValidContentType, }: FilePreviewModalProps): ReactElement => { const [name, setName] = useState(fileName); const [description, setDescription] = useState(''); const t = useTranslation(); const dispatchToastMessage = useToastMessageDispatch(); const ref = useAutoFocus(); const handleName = (e: ChangeEvent): void => { setName(e.currentTarget.value); }; const handleDescription = (e: ChangeEvent): void => { setDescription(e.currentTarget.value); }; const handleSubmit: FormEventHandler = (e): void => { e.preventDefault(); if (!name) { return dispatchToastMessage({ type: 'error', message: t('error-the-field-is-required', { field: t('Name') }), }); } onSubmit(name, description); }; useEffect(() => { if (!isValidContentType) { dispatchToastMessage({ type: 'error', message: t('FileUpload_MediaType_NotAccepted__type__', { type: file.type }), }); onClose(); return; } if (file.size === 0) { dispatchToastMessage({ type: 'error', message: t('FileUpload_File_Empty'), }); onClose(); } }, [file, dispatchToastMessage, isValidContentType, t, onClose]); return ( {t('FileUpload')} {t('Upload_file_name')} {!name && ( {t('error-the-field-is-required', { field: t('Name') })} )} {t('Upload_file_description')} ); }; export default memo(FilePreviewModal);