Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
1 www 1
import React from "react";
2
import { useState, useEffect } from "react";
3
import { Button, Modal } from "react-bootstrap";
4
import { useForm } from "react-hook-form";
5
import styled from "styled-components";
6
import {axios} from "../../../../utils";
7
import Spinner from "../../../../shared/loading-spinner/Spinner";
8
import FormErrorFeedback from "../../../../shared/form-error-feedback/FormErrorFeedback";
9
import { shareModalTypes } from "../../../../redux/share-modal/shareModal.types";
10
import DropzoneComponent from "../../../../shared/dropzone/DropzoneComponent";
11
 
12
const StyledSpinnerContainer = styled.div`
13
  /* position: absolute; */
14
  left: 0;
15
  top: 0;
16
  width: 100%;
17
  height: 100%;
18
  background: rgba(255, 255, 255, 0.4);
19
  display: flex;
20
  justify-content: center;
21
  align-items: center;
22
  z-index: 300;
23
`;
24
 
25
const SendFileModal = (props) => {
26
  // props destructuring
27
  const { show, onHide, urlUpload } = props;
28
 
29
  // react hook form
30
  const {
31
    register,
32
    errors,
33
    handleSubmit,
34
    setValue,
35
    getValues,
36
    clearErrors,
37
  } = useForm();
38
 
39
  // states
40
  const [loading, setLoading] = useState(false);
41
 
42
  const onUploadedHandler = (files) => {
43
    setValue("file", files);
44
    clearErrors("file");
45
  };
46
 
47
  const onSubmitHandler = async (data) => {
48
    setLoading(true);
49
    const formData = new FormData();
50
    Object.entries(data).map(([key, value]) => {
51
      formData.append(key, value);
52
    });
53
    await axios.post(urlUpload, formData).then((response) => {
54
      const resData = response.data;
55
      if (resData.success) {
56
        onHide();
57
      }
58
    });
59
    setLoading(false);
60
  };
61
 
62
  useEffect(() => {
63
    register("file", {
64
      required: "Por favor seleccione un archivo",
65
    });
66
  }, []);
67
 
68
  return (
69
    <Modal show={show} onHide={onHide} style={{ overflowY: "scroll" }}>
70
      <Modal.Header closeButton>
71
        <Modal.Title>Compartir un documento</Modal.Title>
72
      </Modal.Header>
73
      <form
74
        encType="multipart/form-data"
75
        onSubmit={handleSubmit(onSubmitHandler)}
76
      >
77
        <Modal.Body>
78
          <DropzoneComponent
79
            modalType={shareModalTypes.CHAT}
80
            onUploaded={onUploadedHandler}
81
            recomendationText={
82
              <p style={{ textAlign: "center" }}>
83
                Imagenes: png, jpg, jpeg
84
                <br />
85
                Videos: mp4, mpeg, webm
86
                <br />
1130 stevensc 87
                Archivos: pdf
1 www 88
              </p>
89
            }
90
          />
91
          {errors.file && (
92
            <FormErrorFeedback>{errors.file.message}</FormErrorFeedback>
93
          )}
94
        </Modal.Body>
95
        <Modal.Footer>
96
          <Button type="submit">Enviar</Button>
97
          <Button variant="danger" onClick={onHide}>
98
            Cancel
99
          </Button>
100
        </Modal.Footer>
101
      </form>
11 steven 102
      {/* {loading ? (
1 www 103
        <StyledSpinnerContainer>
104
          <Spinner />
105
        </StyledSpinnerContainer>
106
      ) : (
107
        ""
11 steven 108
      )} */}
1 www 109
    </Modal>
110
  );
111
};
112
 
113
export default SendFileModal;