Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 11152 | Ir a la última revisión | | 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 = ({
8
    isOpen,
9
    closeModal,
10
    socialNetworksUrl,
11
    action
12
}) => {
13
 
14
    const [error, setError] = useState(null);
15
    const { handleSubmit, setValue, register } = useForm()
16
 
17
    const onSubmit = ({ facebook, twitter, instagram }) => {
18
 
19
        const data = new FormData()
20
        data.append("facebook", facebook)
21
        data.append("twitter", twitter)
22
        data.append("instagram", instagram)
23
 
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
    }
37
 
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]);
47
 
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 class="mb-3">
61
                        <label class="form-label">Facebook</label>
62
                        <input
63
                            type="text"
64
                            class="form-control"
65
                            name='facebook'
66
                            ref={register}
67
                        />
68
                    </div>
69
                    <div class="mb-3">
70
                        <label class="form-label">Twitter</label>
71
                        <input
72
                            type="text"
73
                            class="form-control"
74
                            name='twitter'
75
                            ref={register}
76
                        />
77
                    </div>
78
                    <div class="mb-3">
79
                        <label class="form-label">Instagram</label>
80
                        <input
81
                            type="text"
82
                            class="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
                    >
94
                        Enviar
95
                    </Button>
96
                    <Button
97
                        variant="default"
98
                        onClick={closeModal}
99
                    >
100
                        Cancelar
101
                    </Button>
102
                </Modal.Footer>
103
            </form>
104
        </Modal >
105
    )
106
}
107
 
108
export default SocialNetworksModal