Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 2650 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
import {axios} from "../../../utils";
2
import React, { useEffect, useState } from "react";
3
import { connect } from "react-redux";
4
import { addNotification } from "../../../redux/notification/notification.actions";
5
import Spinner from "../../../shared/loading-spinner/Spinner";
6
 
7
const SocialNetworks = (props) => {
8
  // redux destructuring
9
  const { addNotification } = props;
10
 
11
  // props destructuring
12
  const { facebook, google, twitter, socialNetworkRoutes } = props;
13
 
14
  // states
15
  const [loading, setLoading] = useState(false);
16
  const [facebookConnected, setFacebookConnected] = useState(Boolean(facebook));
17
  const [twitterConnected, setTwitterConnected] = useState(Boolean(twitter));
18
  const [googleConnected, setGoogleConnected] = useState(Boolean(google));
19
 
20
  const handleAddSocialNetwork = (event, getOauthLink) => {
21
    event.preventDefault();
22
    setLoading(true);
23
    axios.get(getOauthLink).then((response) => {
24
      const resData = response.data;
25
      if (!resData.success) {
26
        return addNotification({
27
          style: "danger",
28
          msg: "Ha ocurrido un error, Por favor intente más tarde",
29
        });
30
      }
31
      const OauthLink = resData.data;
32
      window.location.replace(OauthLink);
33
    });
34
  };
35
 
36
  const handleRemoveSocialNetwork = (event, removeRoute) => {
37
    const network = event.currentTarget.dataset.network;
38
    event.preventDefault();
39
    setLoading(true);
40
    axios.post(removeRoute).then((response) => {
41
      const resData = response.data;
42
      if (!resData.success) {
43
        return addNotification({
44
          style: "danger",
45
          msg: resData.data,
46
        });
47
      }
48
      if (network === "facebook") setFacebookConnected(false);
49
      if (network === "twitter") setTwitterConnected(false);
50
      if (network === "google") setGoogleConnected(false);
51
      addNotification({
52
        style: "success",
53
        msg: resData.data,
54
      });
55
    });
56
    setLoading(false);
57
  };
58
 
59
  return (
60
    <div className="acc-setting">
61
      <h3>Redes Sociales</h3>
62
      <table className="table nowrap" cellSpacing="0" width="100%">
63
        <tbody>
64
          <tr>
65
            <td className="text-center">
66
              <i className="fa fa-facebook"></i> Facebook
67
            </td>
68
            <td className="text-center">
69
              <i className="fa fa-twitter"></i> Twitter
70
            </td>
71
            <td className="text-center">
72
              <i className="fa fa-google"></i> Google
73
            </td>
74
          </tr>
75
          <tr>
76
            <td className="text-center">
77
              {facebookConnected ? (
78
                <button
79
                  className="btn btn-delete"
80
                  id="btn-facebook"
81
                  data-action="disconnect"
82
                  data-network="facebook"
83
                  onClick={(e) =>
84
                    handleRemoveSocialNetwork(
85
                      e,
86
                      socialNetworkRoutes.facebook.remove
87
                    )
88
                  }
89
                >
90
                  Desconectar
91
                </button>
92
              ) : (
93
                <button
94
                  className="btn btn-edit"
95
                  id="btn-facebook"
96
                  data-action="connect"
97
                  data-network="facebook"
98
                  onClick={(e) =>
99
                    handleAddSocialNetwork(e, socialNetworkRoutes.facebook.add)
100
                  }
101
                >
102
                  Conectar
103
                </button>
104
              )}
105
            </td>
106
            <td className="text-center">
107
              {twitterConnected ? (
108
                <button
109
                  className="btn btn-delete"
110
                  id="btn-twitter"
111
                  data-action="disconnect"
112
                  data-network="twitter"
113
                  onClick={(e) =>
114
                    handleRemoveSocialNetwork(
115
                      e,
116
                      socialNetworkRoutes.twitter.remove
117
                    )
118
                  }
119
                >
120
                  Desconectar
121
                </button>
122
              ) : (
123
                <button
124
                  className="btn btn-edit"
125
                  id="btn-twitter"
126
                  data-action="connect"
127
                  data-network="twitter"
128
                  onClick={(e) =>
129
                    handleAddSocialNetwork(e, socialNetworkRoutes.twitter.add)
130
                  }
131
                >
132
                  Conectar
133
                </button>
134
              )}
135
            </td>
136
            <td className="text-center">
137
              {googleConnected ? (
138
                <button
139
                  className="btn btn-delete"
140
                  id="btn-google"
141
                  data-action="disconnect"
142
                  data-network="google"
143
                  onClick={(e) =>
144
                    handleRemoveSocialNetwork(
145
                      e,
146
                      socialNetworkRoutes.google.remove
147
                    )
148
                  }
149
                >
150
                  Desconectar
151
                </button>
152
              ) : (
153
                <button
154
                  className="btn btn-edit"
155
                  id="btn-google"
156
                  data-action="connect"
157
                  data-network="google"
158
                  onClick={(e) =>
159
                    handleAddSocialNetwork(e, socialNetworkRoutes.google.add)
160
                  }
161
                >
162
                  Conectar
163
                </button>
164
              )}
165
            </td>
166
          </tr>
167
        </tbody>
168
      </table>
169
      {loading && (
170
        <div className="spinner-container">
171
          <Spinner />
172
        </div>
173
      )}
174
    </div>
175
  );
176
};
177
 
178
const mapDispatchToProps = {
179
  addNotification: (notification) => addNotification(notification),
180
};
181
 
182
export default connect(null, mapDispatchToProps)(SocialNetworks);