Proyectos de Subversion LeadersLinked - SPA

Rev

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