Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4655 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
4522 stevensc 1
/* eslint-disable react/prop-types */
4645 stevensc 2
import React, { useState } from 'react'
4522 stevensc 3
import { axios } from '../../../../../utils'
4
import { addNotification } from '../../../../../redux/notification/notification.actions'
5
import Avatar from '../../../../../shared/Avatar/Avatar'
6
import { useDispatch } from 'react-redux'
4645 stevensc 7
import CoverModal from '../../../../../shared/profile/edit/cover-section/CoverModal'
4653 stevensc 8
import ImageModal from '../../../../../shared/profile/edit/profile-info/profile-img/ImageModal'
4645 stevensc 9
import { profileTypes } from '../../../../../shared/profile/Profile.types'
10
import EditIcon from '@mui/icons-material/EditOutlined'
4522 stevensc 11
 
4653 stevensc 12
const GroupActions = ({ cover, groupId, name, image, groupType, linkInmail, actionLinks, accessibility, imageProfileCover, imageSizeCover }) => {
4645 stevensc 13
    const [modalToShow, setModalToShow] = useState(null)
14
    const [coverImg, setCoverImg] = useState({ path: `/storage/type/group-cover/code/${groupId}/${cover ? `filename/${cover}` : ""}` })
4653 stevensc 15
    const [profileImg, setProfileImg] = useState({ path: `/storage/type/group/code/${groupId}/${image ? `filename/${image}` : ""}` })
4522 stevensc 16
    const dispatch = useDispatch();
4645 stevensc 17
    const PATH = window.location.pathname
4522 stevensc 18
 
4645 stevensc 19
    const closeModal = () => setModalToShow(null)
20
 
4522 stevensc 21
    const handleActionLink = (url) => {
22
        axios.post(url)
23
            .then(({ data }) => {
24
                if (!data.success) {
25
                    return dispatch(addNotification({ style: 'error', msg: data.data }))
26
                }
27
                addNotification({ style: 'success', msg: data.data })
28
                window.location.reload()
29
            })
30
            .catch(err => console.log('>>: err > ', err))
31
    }
32
 
33
    return (
4645 stevensc 34
        <>
35
            <div className="group__actions">
4677 stevensc 36
                <div className="group__actions-cover position-relative" style={{height: '300px'}}>
4645 stevensc 37
                    <img src={coverImg.path} alt='Profile cover' className='sidebar__cover' />
38
                    {PATH.includes('edit') &&
39
                        <button className='button-icon cover__edit-btn' onClick={() => setModalToShow('cover')}>
40
                            <EditIcon />
4522 stevensc 41
                        </button>
42
                    }
43
                </div>
4645 stevensc 44
                <div className="group__actions-body">
4654 stevensc 45
                    <div className='card__image-options'>
46
                        {PATH.includes('edit')
47
                            ? <img
48
                                alt='Profile Image'
49
                                className={`img ${PATH.includes('edit') && 'cursor-pointer'}`}
50
                                src={profileImg.path}
51
                                onClick={() => PATH.includes('edit') && setModalToShow('image')}
4655 stevensc 52
                                style={{ zIndex: 10 }}
4654 stevensc 53
                            />
54
                            : <Avatar imageUrl={profileImg.path} size='xl' name={name} />
55
                        }
4653 stevensc 56
                    </div>
4645 stevensc 57
                    <h1>{name}</h1>
58
                    <span>{groupType}</span>
59
                    <div className="row" style={{ gap: '.5rem' }}>
60
                        {linkInmail &&
61
                            <a href={linkInmail} className="button btn btn-primary">
62
                                Contactar con el Administrador
63
                            </a>
64
                        }
65
                        {actionLinks?.link_accept &&
66
                            <button
67
                                onClick={() => handleActionLink(actionLinks?.link_accept)}
68
                                className="button btn btn-primary"
69
                            >
70
                                Aceptar invitacion
71
                            </button>
72
                        }
73
                        {actionLinks?.link_cancel &&
74
                            <button
75
                                onClick={() => handleActionLink(actionLinks?.link_cancel)}
76
                                className="button btn btn-secondary"
77
                            >
78
                                Cancelar invitacion
79
                            </button>
80
                        }
81
                        {actionLinks?.link_leave &&
82
                            <button
83
                                onClick={() => handleActionLink(actionLinks?.link_leave)}
84
                                className="button btn btn-secondary"
85
                            >
86
                                Abandonar grupo
87
                            </button>
88
                        }
89
                        {actionLinks?.link_request &&
90
                            <button
91
                                onClick={() => handleActionLink(actionLinks?.link_request)}
92
                                className="button btn btn-primary"
93
                            >
94
                                {accessibility === 'Auto unirse' ? 'Unirse' : 'Solicitar membresia'}
95
                            </button>
96
                        }
97
                    </div>
98
                </div>
4522 stevensc 99
            </div>
4645 stevensc 100
            <CoverModal
101
                isModalOpen={modalToShow === 'cover'}
102
                coverType={profileTypes.GROUP}
103
                groupId={groupId}
104
                handleCoverSectionModalOpen={() => closeModal()}
4677 stevensc 105
                imageSizeCover={imageSizeCover}
4645 stevensc 106
                setCoverImg={(newImage) => setCoverImg(newImage)}
107
            />
4653 stevensc 108
            <ImageModal
109
                handleModalOpen={() => closeModal()}
110
                isModalOpen={modalToShow === 'image'}
111
                groupId={groupId}
4677 stevensc 112
                imageProfileCover={imageProfileCover}
4654 stevensc 113
                profileType={profileTypes.GROUP}
4653 stevensc 114
                setProfileImg={(newImage) => setProfileImg(newImage)}
115
            />
4645 stevensc 116
        </>
4522 stevensc 117
    )
118
}
119
 
120
export default GroupActions