Proyectos de Subversion LeadersLinked - Backend

Rev

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

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