Rev 4353 | Rev 5187 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
/* eslint-disable react/prop-types */import React, { useRef, useState } from 'react'import { axios } from '../../utils'import { addNotification } from '../../redux/notification/notification.actions'import { useDispatch } from 'react-redux'import { useForm } from 'react-hook-form'import SendIcon from '@mui/icons-material/Send'import AttachFileIcon from '@mui/icons-material/AttachFile'import FileModal from '../../mobile-chat/mobile-chat/chat/fileModal/FileModal'const permittedFiles = 'video/mp4, video/mpeg, video/webm, application/pdf, image/jpeg, image/png, image/jpg'const MessageBox = ({ onSend, sendLink, setMsgs }) => {const fileInputEl = useRef(null)const [selectedFile, setSelectedFile] = useState('')const { handleSubmit, register, reset } = useForm()const dispatch = useDispatch()const handleUploadFile = (e) => {const file = e.target.files[0]if (file) setSelectedFile(file)}const removeSelectedFile = () => setSelectedFile('')const handleSendFile = () => {const formData = new FormData()formData.append('filename', selectedFile)formData.append('message', 'File')axios.post(sendLink, formData).then(({ data }) => {if (!data.success) {return dispatch(addNotification({style: 'danger',msg: 'Ha ocurrido un error'}))}setMsgs(prev => [data.data, ...prev])setSelectedFile('')})}const handleSend = ({ message }) => {onSend(message)reset()}return (<div className="chat__input-container"><form onSubmit={handleSubmit(handleSend)}><inputtype="file"name="file"hiddenref={fileInputEl}accept={permittedFiles}onChange={handleUploadFile}/><buttontype="button"className='send_btn icon'onClick={() => fileInputEl.current.click()}><AttachFileIcon /></button><inputtype="text"name="message"className="chatInput"ref={register({ required: true })}placeholder={LABELS.WRITE_YOUR_MESSAGE_HERE}/><button type="submit" className="send_btn"><SendIcon /></button></form>{selectedFile &&<FileModalfile={selectedFile}onCancel={removeSelectedFile}onSend={handleSendFile}/>}</div >)}export default MessageBox