Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 1979 | Rev 2091 | 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'
2090 stevensc 8
import Input from '../UI/inputs/TextInput'
1460 stevensc 9
 
5 stevensc 10
const AddMemberModal = ({
11
  isShow = false,
653 stevensc 12
  linkInvite = '',
13
  handleClose = function () {}
5 stevensc 14
}) => {
653 stevensc 15
  const [users, setUsers] = useState([])
16
  const [search, setSearch] = useState('')
17
  const dispatch = useDispatch()
5 stevensc 18
 
653 stevensc 19
  const handleChange = ({ target }) => setSearch(target.value)
5 stevensc 20
 
653 stevensc 21
  const searchMember = (url, search) => {
1460 stevensc 22
    if (!url) return
653 stevensc 23
    axios
24
      .get(url + '?search=' + search)
25
      .then(({ data: responseData }) => {
26
        const { data } = responseData
27
        setUsers(data)
28
      })
29
      .catch((err) => {
655 stevensc 30
        dispatch(addNotification({ style: 'danger', msg: err.message }))
653 stevensc 31
      })
32
  }
33
 
1979 stevensc 34
  const invite = (uuid) => {
35
    const formData = new FormData()
36
    formData.append('id', uuid)
5 stevensc 37
    axios
1979 stevensc 38
      .post(linkInvite, formData)
653 stevensc 39
      .then(({ data: responseData }) => {
40
        const { data, success } = responseData
41
 
42
        if (!success) {
43
          throw new Error(data)
5 stevensc 44
        }
653 stevensc 45
 
46
        dispatch(addNotification({ style: 'success', msg: data }))
47
        handleClose()
5 stevensc 48
      })
653 stevensc 49
      .catch((err) => {
654 stevensc 50
        dispatch(addNotification({ style: 'danger', msg: err.message }))
653 stevensc 51
      })
52
  }
5 stevensc 53
 
54
  useEffect(() => {
653 stevensc 55
    searchMember(linkInvite, search)
56
  }, [search, linkInvite])
5 stevensc 57
 
58
  return (
1460 stevensc 59
    <Modal
60
      title='Agregar miembro'
61
      show={isShow}
62
      onClose={handleClose}
63
      showFooter={false}
64
    >
2090 stevensc 65
      <Input
66
        name='search'
67
        placeholder='Escribe el nombre del usuario'
68
        onChange={handleChange}
69
      />
1460 stevensc 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