Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
5 stevensc 1
import React, { useState } from 'react'
2296 stevensc 2
import { Link } from 'react-router-dom'
3
import { useDispatch, useSelector } from 'react-redux'
4
import { Facebook, Instagram, Twitter } from '@mui/icons-material'
5
 
5 stevensc 6
import { axios } from '../utils'
7
import { addNotification } from '../redux/notification/notification.actions'
2296 stevensc 8
 
5 stevensc 9
import ConfirmModal from '../../shared/confirm-modal/ConfirmModal'
10
import SocialNetworks from '../../shared/social-networks/SocialNetwors'
11
 
12
const ProfileInfo = ({
13
  id,
14
  image,
15
  following,
16
  follower,
17
  facebook,
18
  twitter,
19
  instagram,
20
  showContact,
21
  fullName,
22
  linkInmail,
23
  connectUrl,
24
  cancelUrl,
2296 stevensc 25
  isEdit
5 stevensc 26
}) => {
27
  const [isAdded, setIsAdded] = useState(!connectUrl)
28
  const [connectionUrl, setConnectionUrl] = useState(connectUrl || cancelUrl)
29
  const [showConfirmModal, setShowConfirmModal] = useState(false)
30
  const labels = useSelector(({ intl }) => intl.labels)
31
  const dispatch = useDispatch()
32
 
33
  const getProfile = () => {
34
    axios.get(window.location.href).then(({ data }) => {
35
      if (data.link_request) {
36
        return setConnectionUrl(data.link_request)
37
      }
38
 
39
      return setConnectionUrl(data.link_cancel)
40
    })
41
  }
42
 
43
  const connect = () => {
44
    axios.post(connectionUrl).then(({ data: response }) => {
45
      const { data, success } = response
46
      if (!success) {
47
        dispatch(addNotification({ style: 'danger', msg: data }))
48
        return
49
      }
50
      dispatch(addNotification({ style: 'success', msg: data }))
51
      getProfile()
52
      setIsAdded(!isAdded)
53
    })
54
  }
55
 
56
  const toggleConfirmationModal = () => {
57
    setShowConfirmModal(!showConfirmModal)
58
  }
59
 
60
  return (
61
    <>
2296 stevensc 62
      <div className='profile-info'>
63
        <img id='user-profile-img' src={image} alt='profile-image' />
5 stevensc 64
        <h3>{fullName}</h3>
2296 stevensc 65
        <div className='row'>
5 stevensc 66
          {facebook && (
2296 stevensc 67
            <a href={facebook} target='_blank' rel='noreferrer'>
5 stevensc 68
              <Facebook />
69
            </a>
70
          )}
71
          {twitter && (
2296 stevensc 72
            <a href={twitter} target='_blank' rel='noreferrer'>
5 stevensc 73
              <Twitter />
74
            </a>
75
          )}
76
          {instagram && (
2296 stevensc 77
            <a href={instagram} target='_blank' rel='noreferrer'>
5 stevensc 78
              <Instagram />
79
            </a>
80
          )}
81
        </div>
2296 stevensc 82
        <div className='row'>
5 stevensc 83
          {following && (
84
            <span>
85
              <b>{following}</b>
86
              <br />
87
              Siguiendo
88
            </span>
89
          )}
90
          {follower && (
91
            <span>
92
              <b>{follower}</b>
93
              <br />
94
              Seguidores
95
            </span>
96
          )}
97
        </div>
2296 stevensc 98
        <div className='row '>
5 stevensc 99
          {showContact && (
100
            <>
101
              <button
102
                className={`btn btn-${isAdded ? 'secondary' : 'primary'}`}
103
                onClick={() =>
104
                  isAdded ? toggleConfirmationModal() : connect()
105
                }
106
              >
107
                {isAdded ? labels.cancel : labels.add}
108
              </button>
2296 stevensc 109
              <Link to={linkInmail} className='btn btn-tertiary'>
5 stevensc 110
                {labels.message}
517 stevensc 111
              </Link>
5 stevensc 112
            </>
113
          )}
114
        </div>
115
        {isEdit && (
116
          <SocialNetworks
2296 stevensc 117
            type='profile'
5 stevensc 118
            profileId={id}
119
            facebook={facebook}
120
            instagram={instagram}
121
            twitter={twitter}
122
          />
123
        )}
124
      </div>
125
      <ConfirmModal
126
        show={showConfirmModal}
127
        onClose={toggleConfirmationModal}
128
        onAccept={connect}
129
        title={labels.title_confirm_connection}
130
        acceptLabel={labels.accept}
131
      />
132
    </>
133
  )
134
}
135
 
136
export default ProfileInfo