Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 3042 | Rev 3044 | 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();
3041 stevensc 30
        formData.append("filename", selectedFile);
3043 stevensc 31
        formData.append("message", 'File');
2655 stevensc 32
 
33
        axios.post(sendLink, formData)
2773 stevensc 34
            .then(({ data }) => {
35
                if (!data.success) {
36
                    return dispatch(addNotification({
2772 stevensc 37
                        style: "danger",
38
                        msg: "Ha ocurrido un error"
2771 stevensc 39
                    }))
2655 stevensc 40
                }
2771 stevensc 41
                setSelectedFile("");
42
                setShowEmojione(false);
2655 stevensc 43
            });
44
    };
45
 
1748 stevensc 46
    return (
2749 stevensc 47
        <div className="message-send-area border-gray border-radius">
1748 stevensc 48
            <form id="form-send-message" name="form-send-message"
49
                onSubmit={e => {
50
                    e.preventDefault()
51
                    onSend(text)
52
                    setText('')
53
                }}
54
            >
55
                <div className="mf-field">
56
                    <input
2655 stevensc 57
                        type="file"
58
                        name="file"
59
                        id="file"
60
                        ref={(e) => {
61
                            fileInputEl.current = e;
62
                        }}
63
                        accept={permittedFiles}
64
                        hidden
65
                        onChange={handleUploadFile}
66
                    />
67
                    <button
68
                        type="button"
69
                        className={`${styles.inputIcon} ti-clip icon uploadFile text-gray`}
70
                        id="uploadFile"
71
                        onClick={() => fileInputEl.current.click()}
72
                    />
73
                    <input
1748 stevensc 74
                        type="text"
75
                        name="message"
76
                        id="message"
1883 steven 77
                        className="border-radius"
1748 stevensc 78
                        value={text}
79
                        placeholder={backendVars.labelWriteMessage}
80
                        onChange={e => setText(e.target.value || '')}
81
                    />
1883 steven 82
                    <button type="submit" className="btn btn-secondary p-1 inmail-submit-btn ">
1877 steven 83
                        <i class="fas fa-chevron-right"></i>
1748 stevensc 84
                    </button>
85
                </div>
86
            </form>
2657 stevensc 87
            {
88
                selectedFile
89
                &&
90
                <FileModal
91
                    file={selectedFile}
92
                    onCancel={removeSelectedFile}
93
                    onSend={handleSendFile}
94
                />
95
            }
1748 stevensc 96
        </div>
97
    )
98
}
99
export default MessageBox