Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5185 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3704 stevensc 1
/* eslint-disable react/prop-types */
2655 stevensc 2
import React, { useRef, useState } from 'react'
5185 stevensc 3
import { useForm } from 'react-hook-form'
4
import SendIcon from '@mui/icons-material/Send'
5
import AttachFileIcon from '@mui/icons-material/AttachFile'
6
import FileModal from '../../mobile-chat/mobile-chat/chat/fileModal/FileModal'
1748 stevensc 7
 
5185 stevensc 8
const permittedFiles = 'video/mp4, video/mpeg, video/webm, application/pdf, image/jpeg, image/png, image/jpg'
1748 stevensc 9
 
5187 stevensc 10
const MessageBox = ({ onSend, sendUrl }) => {
5185 stevensc 11
  const fileInputEl = useRef(null)
12
  const [selectedFile, setSelectedFile] = useState('')
13
  const { handleSubmit, register, reset } = useForm()
2655 stevensc 14
 
5185 stevensc 15
  const handleUploadFile = (e) => {
16
    const file = e.target.files[0]
17
    if (file) setSelectedFile(file)
18
  }
1748 stevensc 19
 
5185 stevensc 20
  const removeSelectedFile = () => setSelectedFile('')
2655 stevensc 21
 
5185 stevensc 22
  const handleSendFile = () => {
5187 stevensc 23
    const messages = {
24
      filename: selectedFile,
25
      message: 'File'
26
    }
27
    onSend(sendUrl, messages)
28
    setSelectedFile('')
5185 stevensc 29
  }
3044 stevensc 30
 
5187 stevensc 31
  const handleSend = (message) => {
32
    onSend(sendUrl, message)
5185 stevensc 33
    reset()
34
  }
2655 stevensc 35
 
5185 stevensc 36
  return (
4351 stevensc 37
        <div className="chat__input-container">
3711 stevensc 38
            <form onSubmit={handleSubmit(handleSend)}>
4351 stevensc 39
                <input
40
                    type="file"
41
                    name="file"
42
                    hidden
43
                    ref={fileInputEl}
44
                    accept={permittedFiles}
45
                    onChange={handleUploadFile}
46
                />
47
                <button
48
                    type="button"
4353 stevensc 49
                    className='send_btn icon'
4351 stevensc 50
                    onClick={() => fileInputEl.current.click()}
4352 stevensc 51
                >
52
                    <AttachFileIcon />
53
                </button>
4351 stevensc 54
                <input
55
                    type="text"
56
                    name="message"
4352 stevensc 57
                    className="chatInput"
4351 stevensc 58
                    ref={register({ required: true })}
5185 stevensc 59
                    placeholder={LABELS.WRITE_YOUR_MESSAGE_HERE}
4351 stevensc 60
                />
61
                <button type="submit" className="send_btn">
4352 stevensc 62
                    <SendIcon />
4351 stevensc 63
                </button>
1748 stevensc 64
            </form>
3710 stevensc 65
            {selectedFile &&
2657 stevensc 66
                <FileModal
67
                    file={selectedFile}
68
                    onCancel={removeSelectedFile}
69
                    onSend={handleSendFile}
70
                />
71
            }
5187 stevensc 72
        </div>
5185 stevensc 73
  )
1748 stevensc 74
}
5185 stevensc 75
export default MessageBox