Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3416 stevensc 1
import React, { useState } from "react";
2
import { Link } from "react-router-dom";
3
import { useDispatch, useSelector } from "react-redux";
4
import { Facebook, Instagram, Twitter } from "@mui/icons-material";
2296 stevensc 5
 
3416 stevensc 6
import { api } from "@api";
7
import { addNotification } from "../redux/notification/notification.actions";
2296 stevensc 8
 
3416 stevensc 9
import ConfirmModal from "../../shared/confirm-modal/ConfirmModal";
10
import SocialNetworks from "../../shared/social-networks/SocialNetwors";
5 stevensc 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,
3416 stevensc 25
  isEdit,
5 stevensc 26
}) => {
3416 stevensc 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();
5 stevensc 32
 
33
  const getProfile = () => {
3416 stevensc 34
    api.get(window.location.href).then(({ data }) => {
5 stevensc 35
      if (data.link_request) {
3416 stevensc 36
        return setConnectionUrl(data.link_request);
5 stevensc 37
      }
38
 
3416 stevensc 39
      return setConnectionUrl(data.link_cancel);
40
    });
41
  };
5 stevensc 42
 
43
  const connect = () => {
44
    axios.post(connectionUrl).then(({ data: response }) => {
3416 stevensc 45
      const { data, success } = response;
5 stevensc 46
      if (!success) {
3416 stevensc 47
        dispatch(addNotification({ style: "danger", msg: data }));
48
        return;
5 stevensc 49
      }
3416 stevensc 50
      dispatch(addNotification({ style: "success", msg: data }));
51
      getProfile();
52
      setIsAdded(!isAdded);
53
    });
54
  };
5 stevensc 55
 
56
  const toggleConfirmationModal = () => {
3416 stevensc 57
    setShowConfirmModal(!showConfirmModal);
58
  };
5 stevensc 59
 
60
  return (
61
    <>
3416 stevensc 62
      <div className="profile-info">
63
        <img id="user-profile-img" src={image} alt="profile-image" />
5 stevensc 64
        <h3>{fullName}</h3>
3416 stevensc 65
        <div className="row">
5 stevensc 66
          {facebook && (
3416 stevensc 67
            <a href={facebook} target="_blank" rel="noreferrer">
5 stevensc 68
              <Facebook />
69
            </a>
70
          )}
71
          {twitter && (
3416 stevensc 72
            <a href={twitter} target="_blank" rel="noreferrer">
5 stevensc 73
              <Twitter />
74
            </a>
75
          )}
76
          {instagram && (
3416 stevensc 77
            <a href={instagram} target="_blank" rel="noreferrer">
5 stevensc 78
              <Instagram />
79
            </a>
80
          )}
81
        </div>
3416 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>
3416 stevensc 98
        <div className="row ">
5 stevensc 99
          {showContact && (
100
            <>
101
              <button
3416 stevensc 102
                className={`btn btn-${isAdded ? "secondary" : "primary"}`}
5 stevensc 103
                onClick={() =>
104
                  isAdded ? toggleConfirmationModal() : connect()
105
                }
106
              >
107
                {isAdded ? labels.cancel : labels.add}
108
              </button>
3416 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
3416 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
    </>
3416 stevensc 133
  );
134
};
5 stevensc 135
 
3416 stevensc 136
export default ProfileInfo;