Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6862 | Ir a la última revisión | | Ultima modificación | Ver Log |

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