Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
653 stevensc 1
import React, { useState, useEffect } from 'react'
2
import { useDispatch } from 'react-redux'
5 stevensc 3
 
1460 stevensc 4
import { axios } from 'utils/index'
5
import { addNotification } from '../../redux/notification/notification.actions'
6
 
7
import Modal from 'components/UI/modal/Modal'
8
 
5 stevensc 9
const AddMemberModal = ({
10
  isShow = false,
653 stevensc 11
  linkInvite = '',
12
  handleClose = function () {}
5 stevensc 13
}) => {
653 stevensc 14
  const [users, setUsers] = useState([])
15
  const [search, setSearch] = useState('')
16
  const dispatch = useDispatch()
5 stevensc 17
 
653 stevensc 18
  const handleChange = ({ target }) => setSearch(target.value)
5 stevensc 19
 
653 stevensc 20
  const searchMember = (url, search) => {
1460 stevensc 21
    if (!url) return
653 stevensc 22
    axios
23
      .get(url + '?search=' + search)
24
      .then(({ data: responseData }) => {
25
        const { data } = responseData
26
        setUsers(data)
27
      })
28
      .catch((err) => {
655 stevensc 29
        dispatch(addNotification({ style: 'danger', msg: err.message }))
653 stevensc 30
      })
31
  }
32
 
1979 stevensc 33
  const invite = (uuid) => {
34
    const formData = new FormData()
35
    formData.append('id', uuid)
5 stevensc 36
    axios
1979 stevensc 37
      .post(linkInvite, formData)
653 stevensc 38
      .then(({ data: responseData }) => {
39
        const { data, success } = responseData
40
 
41
        if (!success) {
42
          throw new Error(data)
5 stevensc 43
        }
653 stevensc 44
 
45
        dispatch(addNotification({ style: 'success', msg: data }))
46
        handleClose()
5 stevensc 47
      })
653 stevensc 48
      .catch((err) => {
654 stevensc 49
        dispatch(addNotification({ style: 'danger', msg: err.message }))
653 stevensc 50
      })
51
  }
5 stevensc 52
 
53
  useEffect(() => {
653 stevensc 54
    searchMember(linkInvite, search)
55
  }, [search, linkInvite])
5 stevensc 56
 
57
  return (
1460 stevensc 58
    <Modal
59
      title='Agregar miembro'
60
      show={isShow}
61
      onClose={handleClose}
62
      showFooter={false}
63
    >
64
      <div className='mb-2'>
65
        <input
66
          onChange={handleChange}
67
          name='search'
68
          className='form-control'
69
          placeholder='Escribe el nombre del usuario'
70
        />
71
      </div>
72
 
73
      <ul className='d-flex flex-column w-100' style={{ gap: '1rem' }}>
74
        {users.map((element, index) => (
75
          <li key={index}>
76
            <div
77
              className='d-flex align-items-center justify-content-between flex-column flex-md-row'
78
              style={{ gap: '.5rem' }}
79
            >
80
              <span>{element.text}</span>
81
              <button
82
                className='btn btn-primary'
83
                onClick={() => invite(element.value)}
84
              >
85
                Invitar
86
              </button>
87
            </div>
88
          </li>
89
        ))}
90
      </ul>
5 stevensc 91
    </Modal>
653 stevensc 92
  )
93
}
5 stevensc 94
 
653 stevensc 95
export default AddMemberModal