Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 1460 | Rev 1979 | 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
 
1971 stevensc 33
  const invite = (id) => {
5 stevensc 34
    axios
1971 stevensc 35
      .post(linkInvite, { id })
653 stevensc 36
      .then(({ data: responseData }) => {
37
        const { data, success } = responseData
38
 
39
        if (!success) {
40
          throw new Error(data)
5 stevensc 41
        }
653 stevensc 42
 
43
        dispatch(addNotification({ style: 'success', msg: data }))
44
        handleClose()
5 stevensc 45
      })
653 stevensc 46
      .catch((err) => {
654 stevensc 47
        dispatch(addNotification({ style: 'danger', msg: err.message }))
653 stevensc 48
      })
49
  }
5 stevensc 50
 
51
  useEffect(() => {
653 stevensc 52
    searchMember(linkInvite, search)
53
  }, [search, linkInvite])
5 stevensc 54
 
55
  return (
1460 stevensc 56
    <Modal
57
      title='Agregar miembro'
58
      show={isShow}
59
      onClose={handleClose}
60
      showFooter={false}
61
    >
62
      <div className='mb-2'>
63
        <input
64
          onChange={handleChange}
65
          name='search'
66
          className='form-control'
67
          placeholder='Escribe el nombre del usuario'
68
        />
69
      </div>
70
 
71
      <ul className='d-flex flex-column w-100' style={{ gap: '1rem' }}>
72
        {users.map((element, index) => (
73
          <li key={index}>
74
            <div
75
              className='d-flex align-items-center justify-content-between flex-column flex-md-row'
76
              style={{ gap: '.5rem' }}
77
            >
78
              <span>{element.text}</span>
79
              <button
80
                className='btn btn-primary'
81
                onClick={() => invite(element.value)}
82
              >
83
                Invitar
84
              </button>
85
            </div>
86
          </li>
87
        ))}
88
      </ul>
5 stevensc 89
    </Modal>
653 stevensc 90
  )
91
}
5 stevensc 92
 
653 stevensc 93
export default AddMemberModal