Rev 6828 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState, useEffect } from 'react'import { axios } from '../../utils'import { useForm } from 'react-hook-form'import { useLocation, useParams } from 'react-router-dom'import { useDispatch, useSelector } from 'react-redux'import { Button, Modal } from 'react-bootstrap'import { addNotification } from '../../redux/notification/notification.actions'import Spinner from '../UI/Spinner'import DropzoneComponent from '../dropzone/DropzoneComponent'import FormErrorFeedback from '../UI/FormErrorFeedback'const CoverModal = ({ isOpen, sizes, onClose, onComplete }) => {const [loading, setLoading] = useState(false)const { uuid } = useParams()const { pathname } = useLocation()const labels = useSelector(({ intl }) => intl.labels)const dispatch = useDispatch()const typesUrl = {profile: `/profile/my-profiles/cover/${uuid}/operation/upload`,company: `/my-company/${uuid}/profile/cover/upload`,group: `/group/my-groups/cover/${uuid}/operation/upload`,}const { register, errors, handleSubmit, setValue, clearErrors, setError } =useForm()const onUploadedHandler = (files) => {setValue('cover', files)clearErrors('cover')}const onSubmitHandler = ({ cover }) => {setLoading(true)const formData = new FormData()formData.append('cover', cover)const type = pathname.split('/')[1]axios.post(typesUrl[type], formData).then(({ data: response }) => {const { data, success } = responseif (!success) {typeof data === 'string'? dispatch(addNotification({ style: 'danger', msg: data })): Object.entries(data).map(([key, value]) =>setError(key, value[0]))return}onComplete(data)setValue('cover', '')onClose()}).finally(() => setLoading(false))}useEffect(() => {register('cover', {required: 'Este campo es requerido',})}, [])return (<Modal show={isOpen} onHide={onClose}><form onSubmit={handleSubmit(onSubmitHandler)}><Modal.Header closeButton><Modal.Title>{labels.cover}</Modal.Title></Modal.Header><Modal.Body>{loading && <Spinner />}<DropzoneComponentmodalType="IMAGE"onUploaded={onUploadedHandler}recomendationText={`Imágenes recomendadas de ${sizes}`}/>{errors.cover && (<FormErrorFeedback>{errors.cover.message}</FormErrorFeedback>)}</Modal.Body><Modal.Footer><Button size="sm" type="submit">{labels.accept}</Button><Button size="sm" variant="danger" onClick={onClose}>{labels.cancel}</Button></Modal.Footer></form></Modal>)}export default CoverModal