Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
6266 stevensc 1
import axios from 'axios'
2
import React, { useState } from 'react'
6290 stevensc 3
import { Button, Modal } from 'react-bootstrap'
6266 stevensc 4
import { useForm } from 'react-hook-form'
14843 stevensc 5
import { useDispatch } from 'react-redux'
6
import { addNotification } from '../../../redux/notification/notification.actions'
6266 stevensc 7
 
6290 stevensc 8
const FooterModal = ({ isOpen, closeModal, footerUploadUrl, action }) => {
6266 stevensc 9
 
11152 stevensc 10
	const { handleSubmit, register } = useForm()
11
	const [error, setError] = useState()
14843 stevensc 12
	const dispatch = useDispatch()
6266 stevensc 13
 
11152 stevensc 14
	const onSubmit = ({ footer }) => {
15
		const data = new FormData()
16
		data.append('footer', footer[0])
6303 stevensc 17
 
11152 stevensc 18
		axios.post(footerUploadUrl, data)
19
			.then(({ data }) => {
20
				if (!data.success) {
14843 stevensc 21
					typeof data.data === 'string'
22
						?
23
						dispatch(addNotification({
24
							style: 'danger',
25
							msg: data.data
26
						}))
27
						: Object.entries(data.data).map(([key, value]) =>
28
							value.map(err =>
29
								dispatch(addNotification({
30
									style: 'danger',
31
									msg: `${key}: ${err}`
32
								}))
33
							)
34
						)
35
					return
11152 stevensc 36
				}
37
				action(data.data)
38
			})
39
			.then(() => {
40
				setError(null)
41
				closeModal()
42
			})
43
			.catch(err => console.log(err))
44
	}
6266 stevensc 45
 
11152 stevensc 46
	return (
47
		<Modal
48
			size="md"
49
			show={isOpen}
50
			onHide={closeModal}
51
			autoFocus={false}
52
		>
53
			<Modal.Header closeButton>
15227 stevensc 54
				<Modal.Title>Pie de página</Modal.Title>
11152 stevensc 55
			</Modal.Header>
56
			<form onSubmit={handleSubmit(onSubmit)}>
57
				<Modal.Body>
58
					<div className="mb-3">
59
						<label htmlFor="formFileSm" className="form-label">Imagen recomendada de (2480 x 268px)</label>
60
						<input
61
							className="form-control form-control-sm"
62
							id="formFileSm"
63
							type="file"
64
							name="footer"
65
							accept='.jpg, .jpeg, .png, .gif'
66
							ref={register}
67
							style={{ padding: '1px' }}
68
						/>
69
					</div>
70
					{error && <p>{error}</p>}
71
				</Modal.Body>
72
				<Modal.Footer>
73
					<Button
74
						variant="primary"
75
						type="submit"
76
					>
14843 stevensc 77
						Enviar
11152 stevensc 78
					</Button>
79
					<Button
80
						className='btn-tertiary'
81
						onClick={closeModal}
82
					>
14843 stevensc 83
						Cancelar
11152 stevensc 84
					</Button>
85
				</Modal.Footer>
86
			</form>
87
		</Modal >
88
	)
6266 stevensc 89
}
90
 
91
export default FooterModal