Rev 206 | Rev 876 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react'import { axios } from '../../../utils'import { addNotification } from '../../../redux/notification/notification.actions'import { useDispatch, useSelector } from 'react-redux'import styled from 'styled-components'import EmptySection from '../../UI/EmptySection'import WidgetLayout from '../WidgetLayout'const StyledContainer = styled(WidgetLayout)`.widget-header {align-items: center;display: flex;justify-content: space-between;padding: 1rem;span {cursor: pointer;}}`const StyledSuggestList = styled.div`max-height: 265px;overflow: auto;width: 100%;display: flex;flex-direction: column;`const PeopleYouMayKnow = () => {const [peopleYouMayKnow, setPeopleYouMayKnow] = useState([])const [lookMore, setLookMore] = useState(false)const labels = useSelector(({ intl }) => intl.labels)const dispatch = useDispatch()const handleConnect = (url) => {axios.post(url).then(({ data }) => {if (!data.success) {dispatch(addNotification({style: 'danger',msg:typeof data.data === 'string' ? data.data : 'Ha ocurrido un error'}))return}dispatch(addNotification({style: 'success',msg: data.data}))getSuggestion()})}const getSuggestion = async (url = '/helpers/people-you-may-know') => {try {const { data: response } = await axios.get(url)if (response.success) setPeopleYouMayKnow(response.data)} catch (error) {console.log(error)}}const dataSlice = () => {let infoFollows = [...peopleYouMayKnow]if (!lookMore) {infoFollows = infoFollows.slice(0, 3)}return infoFollows}useEffect(() => {getSuggestion()}, [])return (<StyledContainer><div className='widget-header'><h3>{`${labels.connect_with}:`}</h3>{peopleYouMayKnow.length >= 4 && (<span onClick={() => setLookMore(!lookMore)}>{lookMore ? labels.view_less : labels.view_more}</span>)}</div><StyledSuggestList>{peopleYouMayKnow.length ? (dataSlice().map(({ id, image, link_cancel, link_request, name, profile }) => (<div className='user' key={id}><div className='d-inline-flex align-items-center gap-2'><a href={profile} target='_blank' rel='noreferrer'><img src={image} alt={`${name} profile image`} /></a><h4 className='break-ellipsis'>{name}</h4></div>{link_request && (<buttonclassName='btn btn-primary'onClick={() => handleConnect(link_request)}>{labels.connect}</button>)}{link_cancel && (<buttonclassName='btn btn-secondary'onClick={() => handleConnect(link_cancel)}>{labels.cancel}</button>)}</div>))) : (<EmptySection align='left' message={labels?.datatable_empty} />)}</StyledSuggestList></StyledContainer>)}export default PeopleYouMayKnow