Rev 6863 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from 'react'import { axios } from '../../utils'import { useDispatch } from 'react-redux'import { addNotification } from '../../redux/notification/notification.actions'import EditIcon from '@mui/icons-material/EditOutlined'import Avatar from '../UI/AvatarImage'import CoverModal from '../cover/CoverModal'import ImageModal from '../modals/ImageModal'const GroupActions = ({cover,groupId,name,image,groupType,linkInmail,actionLinks,accessibility,imageProfileCover,imageSizeCover,}) => {const [modalToShow, setModalToShow] = useState(null)const [coverImg, setCoverImg] = useState({path: `/storage/type/group-cover/code/${groupId}/${cover ? `filename/${cover}` : ''}`,})const [profileImg, setProfileImg] = useState({path: `/storage/type/group/code/${groupId}/${image ? `filename/${image}` : ''}`,})const dispatch = useDispatch()const PATH = window.location.pathnameconst closeModal = () => setModalToShow(null)const handleActionLink = (url) => {axios.post(url).then(({ data }) => {if (!data.success) {return dispatch(addNotification({ style: 'error', msg: data.data }))}addNotification({ style: 'success', msg: data.data })window.location.reload()}).catch((err) => console.log('>>: err > ', err))}return (<><div className="group__actions"><divclassName="group__actions-cover position-relative"style={{ height: '300px' }}><imgsrc={coverImg.path}alt="Profile cover"className="sidebar__cover"/>{PATH.includes('edit') && (<buttonclassName="button-icon cover__edit-btn"onClick={() => setModalToShow('cover')}><EditIcon /></button>)}</div><div className="group__actions-body"><div className="card__image-options">{PATH.includes('edit') ? (<imgalt="Profile Image"className={`img ${PATH.includes('edit') && 'cursor-pointer'}`}src={profileImg.path}onClick={() => PATH.includes('edit') && setModalToShow('image')}style={{ zIndex: 10 }}/>) : (<Avatar imageUrl={profileImg.path} size="xl" name={name} />)}</div><h1>{name}</h1><span>{groupType}</span><div className="row" style={{ gap: '.5rem' }}>{linkInmail && (<a href={linkInmail} className="button btn btn-primary">Contactar con el Administrador</a>)}{actionLinks?.link_accept && (<buttononClick={() => handleActionLink(actionLinks?.link_accept)}className="button btn btn-primary">Aceptar invitacion</button>)}{actionLinks?.link_cancel && (<buttononClick={() => handleActionLink(actionLinks?.link_cancel)}className="button btn btn-secondary">Cancelar invitacion</button>)}{actionLinks?.link_leave && (<buttononClick={() => handleActionLink(actionLinks?.link_leave)}className="button btn btn-secondary">Abandonar grupo</button>)}{actionLinks?.link_request && (<buttononClick={() => handleActionLink(actionLinks?.link_request)}className="button btn btn-primary">{accessibility === 'Auto unirse'? 'Unirse': 'Solicitar membresia'}</button>)}</div></div></div><CoverModalisOpen={modalToShow === 'cover'}sizes={imageSizeCover}onClose={() => closeModal()}onComplete={(newImage) => setCoverImg(newImage)}/><ImageModalshow={modalToShow === 'image'}onClose={() => closeModal()}sizes={imageProfileCover}id={groupId}onComplete={(newImage) => setProfileImg(newImage)}/></>)}export default GroupActions