Rev 5134 | Rev 5997 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
/* eslint-disable camelcase *//* eslint-disable react/prop-types */import React, { useState } from 'react'import { addNotification } from '../redux/notification/notification.actions'import ConfirmationBox from '../shared/confirmation-box/ConfirmationBox'import Spinner from '../shared/loading-spinner/Spinner'import { axios } from '../utils'import styled from 'styled-components'const StyledSpinnerContainer = styled.div`position: absolute;left: 0;top: 0;width: 100%;height: 100%;background: rgba(255, 255, 255, 0.4);display: flex;justify-content: center;align-items: center;z-index: 300;`const Profile = ({image,name,email,network,status,link_view,link_edit,link_delete,link_cancel,link_block,link_reject,link_accept,link_inmail,link_request,link_unblock,link_unfollow,link_approve,link_leave,link_admin,link_impersonate,fetchCallback,isTopData = false,btnAcceptTitle = 'Ver perfil',btnCancelTitle = 'Borrar perfil',btnEditTitle = 'Editar perfil'}) => {const [showConfirmationBox, setShowConfirmationBox] = useState(false)const [showCancelConfirmationBox, setShowCancelConfirmationBox] = useState(false)const [showBlockConfirmationBox, setShowBlockConfirmationBox] = useState(false)const [showRejectConfirmationBox, setShowRejectConfirmationBox] = useState(false)const [showApproveConfirmationBox, setShowApproveConfirmationBox] = useState(false)const [showRequestConfirmationBox, setShowRequestConfirmationBox] = useState(false)const [showUnblockConfirmationBox, setShowUnblockConfirmationBox] = useState(false)const [showLeaveConfirmationBox, setShowLeaveConfirmationBox] = useState(false)const [loading, setLoading] = useState(false)const handleShowConfirmationBox = (show = !showConfirmationBox) => {setShowConfirmationBox(show)}const handleCancelConfirmationBox = (show = !showConfirmationBox) => {setShowCancelConfirmationBox(show)}const handleBlockConfirmationBox = (show = !showConfirmationBox) => {setShowBlockConfirmationBox(show)}const handleRejectConfirmationBox = (show = !showConfirmationBox) => {setShowRejectConfirmationBox(show)}const handleApproveConfirmationBox = (show = !showConfirmationBox) => {setShowApproveConfirmationBox(show)}const handleRequestConfirmationBox = (show = !showConfirmationBox) => {setShowRequestConfirmationBox(show)}const handleUnblockConfirmationBox = (show = !showConfirmationBox) => {setShowUnblockConfirmationBox(show)}const handleLeaveConfirmationBox = (show = !showConfirmationBox) => {setShowLeaveConfirmationBox(show)}const getImpersonateUrl = async (url = '') => {try {const { data } = await axios.get(url)if (data.success) window.location.href = data.data} catch (error) {console.log('>>: error > ', error)}}const handleCancelApply = (url = link_delete) => {setLoading(true)axios.post(url).then(({ data }) => {if (!data.success) {const errorMsg =typeof data.data === 'string'? data.data: 'Ha ocurrido un error, Por favor intente más tarde'addNotification({style: 'danger',msg: errorMsg})}const msg = data.dataaddNotification({style: 'success',msg})if (fetchCallback) fetchCallback()}).catch((error) => console.log('>>: error > ', error)).finally(() => setLoading(false))}const handleUnfollow = async (link_unfollow) => {setLoading(true)await axios.post(link_unfollow).then(({ data }) => {if (data.success) fetchCallback()typeof data.data === 'string' &&addNotification({style: 'danger',msg: data.data})})setLoading(false)}const getManageUrl = async () => {try {const { data } = await axios.get(link_admin)if (data.success) window.open(data.data, '_backend')} catch (error) {console.log('>>: error > ', error)}}return (<div className='profile_info'><div className={`${image ? 'd-flex' : 'd-block'} position-relative`}>{image &&<div className='profile_info_header_imgContainer'><img src={image} className="object-fit-contain" style={{ maxHeight: '100px' }} alt="group image" /></div>}<div className={`${image ? 'col-8 d-flex flex-column align-items-start' : 'col-12'} ${isTopData ? 'justify-content-end' : 'justify-content-center'}`}><h3 className={`${status ? '' : 'w-100 text-left'} ${isTopData ? 'mb-2' : ''} w-100`}>{name}</h3>{(isTopData && email) &&<h4 className={`${status ? '' : 'w-100 text-left'} ${isTopData ? 'mb-2' : ''} w-100`}>{email}</h4>}{network &&<h4 className={`${status ? '' : 'w-100 text-left'} ${isTopData ? 'mb-2' : ''} w-100`}>{network}</h4>}{isTopData &&<ul>{link_view &&<li><ahref={link_view}data-link={link_view}className="btn btn-secondary ellipsis">{btnAcceptTitle}</a></li>}{link_inmail &&<li><ahref={link_inmail}data-link={link_inmail}className="btn btn-primary">{LABELS.MESSAGE}</a></li>}</ul>}</div>{status &&<h4 className={`col-sm-12 d-flex justify-content-center align-items-center ${!image ? 'position-relative' : ''}`}>{status}</h4>}</div><hr /><ul>{link_view && !isTopData && (<li><ahref={link_view}data-link={link_view}title=""className="btn btn-primary">{btnAcceptTitle}</a></li>)}{link_edit && (<li><ahref={link_edit}data-link={link_edit}title=""className="btn btn-secondary">{btnEditTitle}</a></li>)}{link_approve &&<li><ahref="#"className="btn btn-tertiary"onClick={(e) => {e.preventDefault()handleApproveConfirmationBox()}}>{LABELS.APPROVE}</a></li>}{link_accept &&<li><ahref="#"className="btn btn-tertiary"onClick={(e) => {e.preventDefault()handleApproveConfirmationBox()}}>{LABELS.ACCEPT}</a></li>}{link_reject &&<li><ahref="#"className="btn btn-tertiary"onClick={(e) => {e.preventDefault()handleRejectConfirmationBox()}}>{LABELS.REJECT}</a></li>}{link_delete &&<li><ahref="#"className="btn btn-tertiary"onClick={(e) => {e.preventDefault()handleShowConfirmationBox()}}>{btnCancelTitle}</a></li>}{link_inmail && !isTopData &&<li><ahref={link_inmail}data-link={link_inmail}title=""className="btn btn-secondary">{LABELS.MESSAGE}</a></li>}{link_admin &&<li><aonClick={() => getManageUrl()}data-link={link_admin}title="Administrar empresa"className="btn btn-secondary">{LABELS.ADMINISTRATE}</a></li>}{link_unfollow &&<li><aonClick={() => handleUnfollow(link_unfollow)}data-link={link_unfollow}title="Administrar empresa"className="btn btn-tertiary">{LABELS.UNFOLLOW}</a></li>}{link_block &&<li><ahref="#"className="btn btn-tertiary"onClick={(e) => {e.preventDefault()handleBlockConfirmationBox()}}>{LABELS.BLOCK}</a></li>}{link_unblock && (<li><ahref="#"className="btn btn-tertiary"onClick={(e) => {e.preventDefault()handleUnblockConfirmationBox()}}>{LABELS.UNBLOCK}</a></li>)}{link_request &&<li><ahref="#"className="btn btn-tertiary"onClick={(e) => {e.preventDefault()handleRequestConfirmationBox()}}>{LABELS.CONNECT}</a></li>}{link_cancel &&<li><ahref="#"className="btn btn-tertiary"onClick={(e) => {e.preventDefault()handleCancelConfirmationBox()}}>{LABELS.CANCEL}</a></li>}{link_leave &&<li><ahref="#"className="btn btn-tertiary"onClick={(e) => {e.preventDefault()handleLeaveConfirmationBox()}}>{LABELS.LEAVE}</a></li>}{link_impersonate &&<li><a href="#" className="btn btn-tertiary" onClick={() => getImpersonateUrl(link_impersonate)} > Personificar </a></li>}</ul>{link_delete &&<div style={{ position: 'relative' }}><ConfirmationBoxshow={showConfirmationBox}onClose={() => handleShowConfirmationBox(false)}onAccept={() => handleCancelApply(link_delete)}/></div>}{link_cancel && (<div style={{ position: 'relative' }}><ConfirmationBoxshow={showCancelConfirmationBox}onClose={() => handleCancelConfirmationBox(false)}onAccept={() => handleCancelApply(link_cancel)}/></div>)}{link_block && (<div style={{ position: 'relative' }}><ConfirmationBoxshow={showBlockConfirmationBox}onClose={() => handleBlockConfirmationBox(false)}onAccept={() => handleCancelApply(link_block)}/></div>)}{link_accept && (<div style={{ position: 'relative' }}><ConfirmationBoxshow={showApproveConfirmationBox}onClose={() => handleApproveConfirmationBox(false)}onAccept={() => handleCancelApply(link_accept)}/></div>)}{link_approve && (<div style={{ position: 'relative' }}><ConfirmationBoxshow={showApproveConfirmationBox}onClose={() => handleApproveConfirmationBox(false)}onAccept={() => handleCancelApply(link_approve)}/></div>)}{link_reject && (<div style={{ position: 'relative' }}><ConfirmationBoxshow={showRejectConfirmationBox}onClose={() => handleRejectConfirmationBox(false)}onAccept={() => handleCancelApply(link_reject)}/></div>)}{link_request && (<div style={{ position: 'relative' }}><ConfirmationBoxshow={showRequestConfirmationBox}onClose={() => handleRequestConfirmationBox(false)}onAccept={() => handleCancelApply(link_request)}/></div>)}{link_unblock && (<div style={{ position: 'relative' }}><ConfirmationBoxshow={showUnblockConfirmationBox}onClose={() => handleUnblockConfirmationBox(false)}onAccept={() => handleCancelApply(link_unblock)}/></div>)}{link_leave && (<div style={{ position: 'relative' }}><ConfirmationBoxshow={showLeaveConfirmationBox}onClose={() => handleLeaveConfirmationBox(false)}onAccept={() => handleCancelApply(link_leave)}/></div>)}{loading &&<StyledSpinnerContainer><Spinner /></StyledSpinnerContainer>}</div>)}export default Profile