Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
6911 stevensc 1
import React from 'react'
2
import { axios } from '../../utils'
3
import { Modal } from 'react-bootstrap'
4
import { useForm } from 'react-hook-form'
5
import { useDispatch } from 'react-redux'
6
import { addNotification } from '../../redux/notification/notification.actions'
7
 
8
import FormErrorFeedback from '../UI/FormErrorFeedback'
9
 
10
const CreateGroupModal = ({ isOpen, onClose }) => {
11
  const { register, handleSubmit, errors } = useForm()
12
  const dispatch = useDispatch()
13
 
14
  const onSubmitHandler = async (data) => {
15
    const formData = new FormData()
16
    Object.entries(data).map(([key, value]) => formData.append(key, value))
17
    axios
18
      .post('/chat/create-group', formData)
19
      .then(({ data: response }) => {
20
        const { success } = response
21
 
22
        if (!success) {
23
          dispatch(
24
            addNotification({
25
              style: 'danger',
26
              message: 'Ha ocurrido un error, por favor intente más tarde.',
27
            })
28
          )
29
          return
30
        }
31
 
32
        onClose()
33
      })
34
      .catch((error) => {
35
        dispatch(
36
          addNotification({
37
            style: 'danger',
38
            message: 'Ha ocurrido un error, por favor intente más tarde.',
39
          })
40
        )
41
        throw new Error(error)
42
      })
43
  }
44
 
45
  return (
46
    <Modal show={isOpen} onHide={onClose}>
47
      <Modal.Header closeButton>
48
        <Modal.Title>Crear grupo</Modal.Title>
49
      </Modal.Header>
50
      <Modal.Body>
51
        <form onSubmit={handleSubmit(onSubmitHandler)}>
52
          <label className="mb-1" htmlFor="name">
53
            Nombre del grupo
54
          </label>
55
          <input
56
            type="text"
57
            name="name"
58
            id="name"
59
            ref={register({ required: 'Este campo es requerido' })}
60
          />
61
          {errors.name && (
62
            <FormErrorFeedback>{errors.name.message}</FormErrorFeedback>
63
          )}
64
          <div className="mt-3 d-flex gap-3">
65
            <button className="btn btn-primary" type="submit">
66
              Enviar
67
            </button>
68
            <button className="btn btn-secondary" onClick={onClose}>
69
              Cancelar
70
            </button>
71
          </div>
72
        </form>
73
      </Modal.Body>
74
    </Modal>
75
  )
76
}
77
 
78
export default CreateGroupModal