Rev 15274 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import axios from 'axios'
import React from 'react'
import { useEffect } from 'react'
import { Modal } from 'react-bootstrap'
import { useForm } from 'react-hook-form'
import { useDispatch } from 'react-redux'
import { addNotification } from '../../../redux/notification/notification.actions'
import DropzoneComponent from '../../../shared/Dropzone/DropzoneComponent'
const CoverModal = ({
isOpen,
closeModal,
coverUploadUrl,
action
}) => {
const { handleSubmit, register, getValues, setValue, clearErrors, errors } = useForm()
const dispatch = useDispatch()
const onSubmit = ({ cover }) => {
const data = new FormData()
data.append('cover', cover)
axios.post(coverUploadUrl, data)
.then(({ data }) => {
if (!data.success) {
typeof data.data === 'string'
?
dispatch(addNotification({
style: 'danger',
msg: data.data
}))
: Object.entries(data.data).map(([key, value]) =>
value.map(err =>
dispatch(addNotification({
style: 'danger',
msg: `${key}: ${err}`
}))
)
)
return
}
action(data.data)
closeModal()
})
.catch((err) => console.log(err))
}
const onUploadedHandler = (file) => {
setValue('cover', file)
clearErrors('cover')
}
useEffect(() => {
if (getValues('cover')) setValue('cover', '')
}, [isOpen])
useEffect(() => {
register('cover', { required: true })
}, [])
return (
<Modal
size="md"
show={isOpen}
onHide={closeModal}
autoFocus={false}
>
<Modal.Header closeButton>
<Modal.Title>Portada</Modal.Title>
</Modal.Header>
<form onSubmit={handleSubmit(onSubmit)}>
<Modal.Body>
<div className="form-group">
<DropzoneComponent
modalType='IMAGE'
onUploaded={onUploadedHandler}
settedFile={getValues('cover')}
recomendationText='Imagen recomendada de (2480 x 268px)'
/>
</div>
{errors.cover && <p>Este campo es requerido</p>}
</Modal.Body>
<Modal.Footer>
<button
className="btn btn-primary"
type="submit"
>
Enviar
</button>
<button
className='btn btn-tertiary'
onClick={closeModal}
>
Cancelar
</button>
</Modal.Footer>
</form>
</Modal >
)
}
export default CoverModal