Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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