Rev 3908 | Rev 5794 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
/* eslint-disable react/prop-types */import React, { useEffect, useState } from 'react'import parse from 'html-react-parser'import { axios } from '../../../utils'import { connect } from 'react-redux'import { setTimelineUrl } from '../../../redux/feed/feed.actions'import { addNotification } from '../../../redux/notification/notification.actions'import { feedTypes } from '../../../redux/feed/feed.types'import FeedSection from '../../../dashboard/components/feed-section/FeedSection'import ShareFeed from '../../../dashboard/components/share-feed/ShareFeed'import GroupMembersHelper from '../../../shared/helpers/group-members-helper/GroupMembersHelper'import GroupAttr from './component/GroupAttr'import Cover from '../../../shared/cover/Cover'import SuggestWidget from '../../../shared/helpers/my-groups-helper/SuggestWidget'const View = (props) => {// backendVars Destructuringconst {routeTimeline,groupId,cover,image,totalMembers,name,overview,groupType,industry,privacy,accessibility,website,withoutFeeds,linkInmail,} = props.backendVars// redux destructuringconst { setTimelineUrl, addNotification } = propsconst groupTabs = {FEED_TAB: 'FEED_TAB',INFO_TAB: 'INFO_TAB',}// statesconst [currentTab, setCurrentTab] = useState(withoutFeeds ? groupTabs.INFO_TAB : groupTabs.FEED_TAB)const [actionLinks, setActionLinks] = useState({})const [linkInvite, setLinkInvite] = useState('')setTimelineUrl(routeTimeline)const load = () => {axios.get('').then(({ data }) => {if (!data.success) {return addNotification({ style: 'error', msg: data.data })}setActionLinks(data.data)}).catch((err) => console.log('>>: err > ', err))}useEffect(() => {load()}, [])const handleActionLink = (url) => {axios.post(url).then(({ data }) => {if (!data.success) {return addNotification({ style: 'error', msg: data.data })}addNotification({ style: 'success', msg: data.data })window.location.reload()}).catch((err) => console.log('>>: err > ', err))}return (<><Cover cover={cover} id={groupId} type="group" /><main className="main-section-data container px-0 mt-3"><div className="main-left-sidebar"><div className="user_profile"><div className="user-pro-img"><imgsrc={`/storage/type/group/code/${groupId}/${image ? `filename/${image}` : ''}`}alt="profile-image"/></div><div className="user_pro_status"><h1 className="font-weight-bold" style={{ fontSize: '1.5rem' }}>{name}</h1><ul className="flw-status"><div className="container horizontal-list"><div className="row ">{linkInmail && (<a href={linkInmail || '#'} className="btn btn-primary">Contactar con el Administrador</a>)}<div className="members_count"><b style={{ fontSize: '1rem' }}>{totalMembers}</b><p>Miembros</p></div>{actionLinks.link_accept && (<buttononClick={() =>handleActionLink(actionLinks.link_accept)}className="btn btn-primary">Aceptar invitacion</button>)}{actionLinks.link_cancel && (<buttononClick={() =>handleActionLink(actionLinks.link_cancel)}className="btn btn-primary">Cancelar invitacion</button>)}{!linkInvite && actionLinks.link_leave && (<buttononClick={() => handleActionLink(actionLinks.link_leave)}className="btn btn-primary">Abandonar grupo</button>)}{actionLinks.link_request && (<buttononClick={() =>handleActionLink(actionLinks.link_request)}className="btn btn-primary">{accessibility === 'Auto unirse'? 'Unirse': 'Solicitar membresia'}</button>)}</div></div></ul></div></div><GroupMembersHelpergroupId={groupId}handleFirstLinkInvite={(link) => setLinkInvite(link)}/></div><div className="main-ws-sec"><div className="user-tab-sec">{!withoutFeeds && (<div className="row"><div className="col text-left pl-0"><buttonclassName={` ${currentTab === groupTabs.FEED_TAB ? 'active' : ''} animated fadeIn btn btn-link p-0 text-decoration-none`}onClick={() => setCurrentTab(groupTabs.FEED_TAB)}><span className="font-weight-bold">Ver Publicaciones</span></button></div><div className="col text-right pr-0"><buttonclassName={` ${currentTab === groupTabs.INFO_TAB ? 'active' : ''} animated fadeIn btn btn-link p-0 text-decoration-none`}onClick={() => setCurrentTab(groupTabs.INFO_TAB)}><span className="font-weight-bold">Ver Información</span></button></div></div>)}</div>{currentTab === groupTabs.FEED_TAB && (<div className="product-feed-tab fadeIn"><ShareFeedfeedType={feedTypes.GROUP}postUrl={`/feed/add/group/${groupId}`}image={`/storage/type/group/code/${groupId}/${image ? `filename/${image}` : ''}`}/><div className="posts-section"><FeedSectionrouteTimeline={routeTimeline}image={`/storage/type/group/code/${groupId}/${image ? `filename/${image}` : ''}`}/></div></div>)}{currentTab === groupTabs.INFO_TAB && (<div className="product-feed-tab fadeIn">{overview && (<GroupAttr title="Visión General"><span>{parse(overview)}</span></GroupAttr>)}{groupType && (<GroupAttr title="Tipo"><span>{groupType}</span></GroupAttr>)}{industry && (<GroupAttr title="Industria"><span>{industry}</span></GroupAttr>)}{!!privacy && (<GroupAttr title="Privacidad"><span>{privacy}</span></GroupAttr>)}{!!accessibility && (<GroupAttr title="Accesibilidad"><span>{accessibility}</span></GroupAttr>)}{!!website && (<GroupAttr title="Página Web"><span>{website}</span></GroupAttr>)}</div>)}</div><div className="right-sidebar"><SuggestWidget title="Grupos:" url="/helpers/groups-suggestion" /></div></main></>)}const mapDispatchToProps = {setTimelineUrl: (url) => setTimelineUrl(url),addNotification: (notification) => addNotification(notification),}export default connect(null, mapDispatchToProps)(View)