Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
2655 stevensc 1
import React, { useRef, useState } from 'react'
2
import FileModal from '../../mobile-chat/mobile-chat/chat/fileModal/FileModal';
3
import { axios } from '../../utils';
4
import styles from "../../mobile-chat/mobile-chat/chat/chat.module.scss";
1748 stevensc 5
 
2655 stevensc 6
const permittedFiles = "video/mp4, video/mpeg, video/webm, application/pdf, image/jpeg, image/png, image/jpg";
1748 stevensc 7
 
2655 stevensc 8
const MessageBox = ({ onSend, backendVars, sendLink }) => {
9
 
10
    const fileInputEl = useRef(null);
1748 stevensc 11
    const [text, setText] = useState('')
2655 stevensc 12
    const [selectedFile, setSelectedFile] = useState("");
1748 stevensc 13
 
2655 stevensc 14
    const handleUploadFile = (e) => {
15
        const file = e.target.files[0];
16
        if (file) {
17
            setSelectedFile(file);
18
        }
19
    };
20
 
21
    const removeSelectedFile = () => {
22
        setSelectedFile("");
23
    };
24
 
25
    const handleSendFile = () => {
26
        const formData = new FormData();
2656 stevensc 27
        formData.append("message", selectedFile);
2655 stevensc 28
 
29
        axios.post(sendLink, formData)
30
            .then(async (response) => {
31
                const resData = response.data;
32
                if (resData.success) {
33
                    setSelectedFile("");
34
                    setShowEmojione(false);
35
                }
36
            });
37
    };
38
 
1748 stevensc 39
    return (
2749 stevensc 40
        <div className="message-send-area border-gray border-radius">
1748 stevensc 41
            <form id="form-send-message" name="form-send-message"
42
                onSubmit={e => {
43
                    e.preventDefault()
44
                    onSend(text)
45
                    setText('')
46
                }}
47
            >
48
                <div className="mf-field">
49
                    <input
2655 stevensc 50
                        type="file"
51
                        name="file"
52
                        id="file"
53
                        ref={(e) => {
54
                            fileInputEl.current = e;
55
                        }}
56
                        accept={permittedFiles}
57
                        hidden
58
                        onChange={handleUploadFile}
59
                    />
60
                    <button
61
                        type="button"
62
                        className={`${styles.inputIcon} ti-clip icon uploadFile text-gray`}
63
                        id="uploadFile"
64
                        onClick={() => fileInputEl.current.click()}
65
                    />
66
                    <input
1748 stevensc 67
                        type="text"
68
                        name="message"
69
                        id="message"
1883 steven 70
                        className="border-radius"
1748 stevensc 71
                        value={text}
72
                        placeholder={backendVars.labelWriteMessage}
73
                        onChange={e => setText(e.target.value || '')}
74
                    />
1883 steven 75
                    <button type="submit" className="btn btn-secondary p-1 inmail-submit-btn ">
1877 steven 76
                        <i class="fas fa-chevron-right"></i>
1748 stevensc 77
                    </button>
78
                </div>
79
            </form>
2657 stevensc 80
            {
81
                selectedFile
82
                &&
83
                <FileModal
84
                    file={selectedFile}
85
                    onCancel={removeSelectedFile}
86
                    onSend={handleSendFile}
87
                />
88
            }
1748 stevensc 89
        </div>
90
    )
91
}
92
export default MessageBox