AutorÃa | Ultima modificación | Ver Log |
import React from "react";import { useState, useEffect } from "react";import { Button, Modal } from "react-bootstrap";import { useForm } from "react-hook-form";import styled from "styled-components";import { axios } from "../../../../utils";import Spinner from "../../../../shared/loading-spinner/Spinner";import FormErrorFeedback from "../../../../shared/form-error-feedback/FormErrorFeedback";import { shareModalTypes } from "../../../../redux/share-modal/shareModal.types";import DropzoneComponent from "../../../../shared/dropzone/DropzoneComponent";const StyledSpinnerContainer = styled.div`/* position: absolute; */left: 0;top: 0;width: 100%;height: 100%;background: rgba(255, 255, 255, 0.4);display: flex;justify-content: center;align-items: center;z-index: 300;`;const SendFileModal = (props) => {// props destructuringconst { show, onHide, urlUpload } = props;// react hook formconst {register,errors,handleSubmit,setValue,getValues,clearErrors,} = useForm();// statesconst [loading, setLoading] = useState(false);const onUploadedHandler = (files) => {setValue("file", files);clearErrors("file");};const onSubmitHandler = async (data) => {setLoading(true);const formData = new FormData();Object.entries(data).map(([key, value]) => {formData.append(key, value);});await axios.post(urlUpload, formData).then((response) => {const resData = response.data;if (resData.success) {onHide();}});setLoading(false);};useEffect(() => {register("file", {required: "Por favor seleccione un archivo",});}, []);return (<Modal show={show} onHide={onHide} style={{ overflowY: "scroll" }}><Modal.Header closeButton><Modal.Title>Compartir un documento</Modal.Title></Modal.Header><formencType="multipart/form-data"onSubmit={handleSubmit(onSubmitHandler)}><Modal.Body>{loading?<StyledSpinnerContainer><Spinner /></StyledSpinnerContainer>:<DropzoneComponentmodalType={shareModalTypes.CHAT}onUploaded={onUploadedHandler}recomendationText={<p style={{ textAlign: "center" }}>Imagenes: png, jpg, jpeg<br />Videos: mp4, mpeg, webm<br />Archivos: pdf</p>}/>}{errors.file&&<FormErrorFeedback>{errors.file.message}</FormErrorFeedback>}</Modal.Body><Modal.Footer><Buttontype="submit"disabled={loading}>Enviar</Button><Button variant="danger" onClick={onHide}>Cancelar</Button></Modal.Footer></form></Modal>);};export default SendFileModal;