Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
4512 stevensc 1
/* eslint-disable react/prop-types */
2
import React, { useEffect, useState } from "react";
4513 stevensc 3
import { axios } from "../../../../../utils";
4512 stevensc 4
import { addNotification } from "../../../../../redux/notification/notification.actions";
4514 stevensc 5
import EastIcon from '@mui/icons-material/East';
4512 stevensc 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
 
4514 stevensc 10
const Members = ({ groupId }) => {
4512 stevensc 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
 
4514 stevensc 46
    const openModal = (e) => {
47
        e.preventDefault();
48
        setShowMembersModal(true)
49
    }
50
 
4512 stevensc 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">
4514 stevensc 66
                    <h3>{members.length} Miembros</h3>
4512 stevensc 67
                </div>
68
                <div className="members-image__list">
4517 stevensc 69
                    {members.slice(0, 4).map((member) => {
4512 stevensc 70
                        return <Avatar
71
                            key={member.name}
72
                            imageUrl={member.image}
73
                            size='lg'
74
                            name={member.name}
75
                        />
76
                    })}
77
                </div>
4517 stevensc 78
                {linkInvite &&
79
                    <button
80
                        onClick={() => setAddModalShow(!addModalShow)}
4520 stevensc 81
                        className="button btn btn-primary ml-3"
4517 stevensc 82
                    >
4520 stevensc 83
                        Invitar miembros
4517 stevensc 84
                    </button>
85
                }
4514 stevensc 86
                <a className="load__suggest" onClick={(e) => openModal(e)}>
87
                    <span>Ver más</span>
88
                    <EastIcon />
89
                </a>
4512 stevensc 90
            </div>
91
        </>
92
    );
93
};
94
 
95
export default Members;