Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
6539 stevensc 1
import axios from 'axios'
2
import React, { useEffect, useState } from 'react'
3
import { Modal, Button } from 'react-bootstrap'
4
import { getData } from '../../../helpers/fetchHelpers'
5
import { useForm } from 'react-hook-form'
6
 
7
const SocialNetworksModal = ({
11152 stevensc 8
	isOpen,
9
	closeModal,
10
	socialNetworksUrl,
11
	action
6539 stevensc 12
}) => {
13
 
11152 stevensc 14
	const [error, setError] = useState(null)
15
	const { handleSubmit, setValue, register } = useForm()
6539 stevensc 16
 
11152 stevensc 17
	const onSubmit = ({ facebook, twitter, instagram }) => {
6539 stevensc 18
 
11152 stevensc 19
		const data = new FormData()
20
		data.append('facebook', facebook)
21
		data.append('twitter', twitter)
22
		data.append('instagram', instagram)
6539 stevensc 23
 
11152 stevensc 24
		axios.post(socialNetworksUrl, data)
25
			.then(({ data }) => {
26
				if (!data.success) {
27
					return setError(data.data)
28
				}
29
				action(data.data)
30
			})
31
			.then(() => {
32
				setError(null)
33
				closeModal()
34
			})
35
			.catch((err) => setError(err))
36
	}
6539 stevensc 37
 
11152 stevensc 38
	useEffect(() => {
39
		getData(socialNetworksUrl)
40
			.then(({ facebook, twitter, instagram }) => {
41
				setValue('facebook', facebook)
42
				setValue('twitter', twitter)
43
				setValue('instagram', instagram)
44
			})
45
			.catch(err => setError(err))
46
	}, [isOpen])
6539 stevensc 47
 
11152 stevensc 48
	return (
49
		<Modal
50
			size="md"
51
			show={isOpen}
52
			onHide={closeModal}
53
			autoFocus={false}
54
		>
55
			<Modal.Header closeButton>
56
				<Modal.Title>Cambiar</Modal.Title>
57
			</Modal.Header>
58
			<form onSubmit={handleSubmit(onSubmit)}>
59
				<Modal.Body>
60
					<div className="mb-3">
61
						<label className="form-label">Facebook</label>
62
						<input
63
							type="text"
64
							className="form-control"
65
							name='facebook'
66
							ref={register}
67
						/>
68
					</div>
69
					<div className="mb-3">
70
						<label className="form-label">Twitter</label>
71
						<input
72
							type="text"
73
							className="form-control"
74
							name='twitter'
75
							ref={register}
76
						/>
77
					</div>
78
					<div className="mb-3">
79
						<label className="form-label">Instagram</label>
80
						<input
81
							type="text"
82
							className="form-control"
83
							name='instagram'
84
							ref={register}
85
						/>
86
					</div>
87
					{error && <p>{error}</p>}
88
				</Modal.Body>
89
				<Modal.Footer>
90
					<Button
91
						variant="primary"
92
						type="submit"
93
					>
6539 stevensc 94
                        Enviar
11152 stevensc 95
					</Button>
96
					<Button
97
						className='btn-tertiary'
98
						onClick={closeModal}
99
					>
6539 stevensc 100
                        Cancelar
11152 stevensc 101
					</Button>
102
				</Modal.Footer>
103
			</form>
104
		</Modal >
105
	)
6539 stevensc 106
}
107
 
108
export default SocialNetworksModal