Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6862 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
6862 stevensc 1
import React, { useEffect, useState } from 'react'
2
import { axios } from '../../utils'
3
import { addNotification } from '../../redux/notification/notification.actions'
4
import EastIcon from '@mui/icons-material/East'
6830 stevensc 5
 
6862 stevensc 6
import Avatar from '../UI/AvatarImage'
7
import MembersModal from '../modals/MembersModal'
8
import AddMemberModal from '../modals/AddMemberModal'
9
 
6830 stevensc 10
const Members = ({ groupId }) => {
6862 stevensc 11
  const [members, setMembers] = useState([])
12
  const [addModalShow, setAddModalShow] = useState(false)
13
  const [showMembersModal, setShowMembersModal] = useState(false)
14
  const [linkInvite, setLinkInvite] = useState('')
6830 stevensc 15
 
6870 stevensc 16
  const getMembers = () => {
17
    axios
18
      .get(`/helpers/group-members/${groupId}`)
19
      .then(({ data: response }) => {
20
        const { data, success } = response
21
        if (success) {
22
          setMembers(data.items)
23
          setLinkInvite(data.link_invite)
24
        }
25
      })
6862 stevensc 26
  }
6830 stevensc 27
 
6870 stevensc 28
  useEffect(() => {
29
    getMembers()
30
  }, [groupId])
6830 stevensc 31
 
6862 stevensc 32
  const handleAction = (url) => {
33
    const params = new FormData()
34
    axios
35
      .post(url, params)
36
      .then(({ data }) => {
37
        if (!data.success) {
38
          return addNotification({ style: 'danger', msg: data.data })
39
        }
40
        addNotification({
41
          style: 'success',
42
          msg: 'Accion realizada exitosamente',
43
        })
6870 stevensc 44
        getMembers()
6862 stevensc 45
      })
46
      .catch((err) => console.log('>>: err > ', err))
47
  }
6830 stevensc 48
 
6862 stevensc 49
  const closeAddModal = () => {
50
    setAddModalShow(false)
6870 stevensc 51
    getMembers()
6862 stevensc 52
  }
6830 stevensc 53
 
6862 stevensc 54
  const openModal = (e) => {
55
    e.preventDefault()
56
    setShowMembersModal(true)
57
  }
6830 stevensc 58
 
6862 stevensc 59
  return (
60
    <>
61
      <AddMemberModal
62
        isShow={addModalShow}
63
        handleClose={closeAddModal}
64
        linkInvite={linkInvite}
65
      />
66
      <MembersModal
67
        isShow={showMembersModal}
68
        handleClose={() => setShowMembersModal(!showMembersModal)}
69
        members={members}
70
        handleAction={handleAction}
71
      />
72
      <div className="suggest__widget">
73
        <div className="linked__widget-header">
74
          <h3>{members.length} Miembros</h3>
75
        </div>
76
        <div className="members-image__list">
77
          {members.slice(0, 4).map((member) => {
78
            return (
79
              <Avatar
80
                key={member.name}
81
                imageUrl={member.image}
82
                size="lg"
83
                name={member.name}
84
              />
85
            )
86
          })}
87
        </div>
88
        {linkInvite && (
89
          <button
90
            onClick={() => setAddModalShow(!addModalShow)}
91
            className="button btn btn-primary ml-3"
92
          >
93
            Invitar miembros
94
          </button>
95
        )}
96
        <a className="load__suggest" onClick={(e) => openModal(e)}>
97
          <span>Ver más</span>
98
          <EastIcon />
99
        </a>
100
      </div>
101
    </>
102
  )
103
}
104
 
105
export default Members