Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6830 | Ir a la última revisión | | 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
 
6862 stevensc 16
  const load = () => {
17
    axios.get(`/helpers/group-members/${groupId}`).then(({ data }) => {
18
      if (data.success) {
19
        setMembers(data.data.items)
20
        setLinkInvite(data.data.link_invite)
21
      }
22
    })
23
  }
6830 stevensc 24
 
6862 stevensc 25
  useEffect(() => load(), [])
6830 stevensc 26
 
6862 stevensc 27
  const handleAction = (url) => {
28
    const params = new FormData()
29
    axios
30
      .post(url, params)
31
      .then(({ data }) => {
32
        if (!data.success) {
33
          return addNotification({ style: 'danger', msg: data.data })
34
        }
35
        addNotification({
36
          style: 'success',
37
          msg: 'Accion realizada exitosamente',
38
        })
6830 stevensc 39
        load()
6862 stevensc 40
      })
41
      .catch((err) => console.log('>>: err > ', err))
42
  }
6830 stevensc 43
 
6862 stevensc 44
  const closeAddModal = () => {
45
    setAddModalShow(false)
46
    load()
47
  }
6830 stevensc 48
 
6862 stevensc 49
  const openModal = (e) => {
50
    e.preventDefault()
51
    setShowMembersModal(true)
52
  }
6830 stevensc 53
 
6862 stevensc 54
  return (
55
    <>
56
      <AddMemberModal
57
        isShow={addModalShow}
58
        handleClose={closeAddModal}
59
        linkInvite={linkInvite}
60
      />
61
      <MembersModal
62
        isShow={showMembersModal}
63
        handleClose={() => setShowMembersModal(!showMembersModal)}
64
        members={members}
65
        handleAction={handleAction}
66
      />
67
      <div className="suggest__widget">
68
        <div className="linked__widget-header">
69
          <h3>{members.length} Miembros</h3>
70
        </div>
71
        <div className="members-image__list">
72
          {members.slice(0, 4).map((member) => {
73
            return (
74
              <Avatar
75
                key={member.name}
76
                imageUrl={member.image}
77
                size="lg"
78
                name={member.name}
79
              />
80
            )
81
          })}
82
        </div>
83
        {linkInvite && (
84
          <button
85
            onClick={() => setAddModalShow(!addModalShow)}
86
            className="button btn btn-primary ml-3"
87
          >
88
            Invitar miembros
89
          </button>
90
        )}
91
        <a className="load__suggest" onClick={(e) => openModal(e)}>
92
          <span>Ver más</span>
93
          <EastIcon />
94
        </a>
95
      </div>
96
    </>
97
  )
98
}
99
 
100
export default Members