Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
3585 stevensc 1
/* eslint-disable react/prop-types */
1 www 2
import React, { useEffect, useState } from "react";
3585 stevensc 3
import { withRouter } from "react-router";
1 www 4
import styled from "styled-components";
5
import BasicSettings from "./basic-settings/BasicSettings";
6
import Browsers from "./browsers/Browsers";
7
import ChangeImage from "./change-image/ChangeImage";
8
import ChangePassword from "./change-password/ChangePassword";
9
import Devices from "./devices/Devices";
10
import Ips from "./ips/Ips";
11
import Location from "./location/Location";
12
import Notifications from "./notifications/Notifications";
13
import Privacy from "./privacy/Privacy";
14
import SocialNetworks from "./social-networks/SocialNetworks";
15
import Transactions from "./transactions/Transactions";
1963 steven 16
import CloseAccount from "./close-account/CloseAccount";
1 www 17
 
18
const StyledNavTabs = styled.div`
19
  a {
20
    cursor: pointer;
21
    &.active {
22
      color: blue;
23
    }
24
  }
25
`;
26
 
27
const TABS = {
28
  BASIC: "BASIC",
29
  NOTIFICATIONS: "NOTIFICATIONS",
30
  CHANGE_PASSWORD: "CHANGE_PASSWORD",
31
  CHANGE_IMAGE: "CHANGE_IMAGE",
32
  LOCATION: "LOCAITON",
33
  PRIVACY: "PRIVACY",
34
  SOCIAL_NETWORKS: "SOCIAL_NETWORKS",
35
  TRANSACTIONS: "TRANSACTIONS",
36
  BROWSERS: "BROWSERS",
37
  IPS: "IPS",
38
  DEVICES: "DEVICES",
1963 steven 39
  CLOSE_ACCOUNT: "CLOSE_ACCOUNT",
1 www 40
};
41
 
42
const AccountSettings = (props) => {
43
  // props destructuring
44
  const {
45
    facebook,
46
    google,
47
    twitter,
48
    socialNetworkRoutes,
49
    routeTransactions,
50
    routeAddFunds,
51
    routeBrowsers,
52
    routeIPs,
53
    routeDevices,
54
    balance,
55
    amounts,
56
  } = props.backendVars;
57
 
58
  const [currentTab, setCurrentTab] = useState(TABS.BASIC);
59
 
3585 stevensc 60
  const handleChangeTab = (event, tab) => {
1 www 61
    event.preventDefault();
62
    setCurrentTab(tab);
63
  };
64
 
65
  const TabRender = () => {
66
    switch (currentTab) {
67
      case TABS.BASIC:
68
        return <BasicSettings />;
69
      case TABS.NOTIFICATIONS:
70
        return <Notifications />;
71
      case TABS.CHANGE_PASSWORD:
72
        return <ChangePassword />;
73
      case TABS.CHANGE_IMAGE:
74
        return <ChangeImage />;
75
      case TABS.LOCATION:
76
        return <Location />;
77
      case TABS.PRIVACY:
78
        return <Privacy />;
79
      case TABS.SOCIAL_NETWORKS:
80
        return (
81
          <SocialNetworks
82
            facebook={facebook}
83
            twitter={twitter}
84
            google={google}
85
            socialNetworkRoutes={socialNetworkRoutes}
86
          />
87
        );
88
      case TABS.TRANSACTIONS:
89
        return (
90
          <Transactions
91
            routeTransactions={routeTransactions}
92
            routeAddFunds={routeAddFunds}
93
            balance={balance}
94
            amounts={amounts}
95
          />
96
        );
97
      case TABS.BROWSERS:
98
        return <Browsers routeBrowsers={routeBrowsers} />;
99
      case TABS.IPS:
100
        return <Ips routeIPs={routeIPs} />;
101
      case TABS.DEVICES:
102
        return <Devices routeDevices={routeDevices} />;
1963 steven 103
      case TABS.CLOSE_ACCOUNT:
104
        return <CloseAccount />;
1 www 105
      case TABS.default:
106
        return <BasicSettings />;
107
    }
108
  };
109
 
110
  useEffect(() => {
111
    const searchParam = new URLSearchParams(props.location.search);
112
    const tab = searchParam.get("tab");
113
    if (tab === "nav-basic") setCurrentTab(TABS.BASIC);
114
    if (tab === "nav-notification") setCurrentTab(TABS.NOTIFICATIONS);
115
    if (tab === "nav-password") setCurrentTab(TABS.CHANGE_PASSWORD);
116
    if (tab === "nav-image") setCurrentTab(TABS.CHANGE_IMAGE);
117
    if (tab === "nav-location") setCurrentTab(TABS.LOCATION);
118
    if (tab === "nav-privacy") setCurrentTab(TABS.PRIVACY);
119
    if (tab === "nav-social-networks") setCurrentTab(TABS.SOCIAL_NETWORKS);
120
    if (tab === "nav-transactions") setCurrentTab(TABS.TRANSACTIONS);
121
    if (tab === "nav-browsers") setCurrentTab(TABS.BROWSERS);
122
    if (tab === "nav-ips") setCurrentTab(TABS.IPS);
123
    if (tab === "nav-devices") setCurrentTab(TABS.DEVICES);
124
  }, [props.location]);
125
 
126
  return (
127
    <section className="profile-account-setting">
128
      <div className="container">
129
        <div className="account-tabs-setting">
2633 stevensc 130
          <h1>Configuración de la cuenta</h1>
1 www 131
          <div className="row">
2646 stevensc 132
            <div className="col-lg-4">
1 www 133
              <div className="acc-leftbar">
134
                <StyledNavTabs
135
                  className="nav nav-tabs"
136
                  id="nav-tab"
137
                  role="tablist"
138
                >
139
                  <a
3585 stevensc 140
                    href="#"
2629 stevensc 141
                    className={`nav-item nav-link`}
1 www 142
                    onClick={(e) => handleChangeTab(e, TABS.BASIC)}
3585 stevensc 143
                    >
2629 stevensc 144
                    <i className="la la-user" />Básica
1 www 145
                  </a>
146
                  <a
3585 stevensc 147
                    href="#"
2629 stevensc 148
                    className={`nav-item nav-link`}
1 www 149
                    onClick={(e) => handleChangeTab(e, TABS.NOTIFICATIONS)}
150
                  >
2629 stevensc 151
                    <i className="la la-cogs" />Notificaciones
1 www 152
                  </a>
153
                  <a
3585 stevensc 154
                    href="#"
2629 stevensc 155
                    className={`nav-item nav-link`}
1 www 156
                    onClick={(e) => handleChangeTab(e, TABS.CHANGE_PASSWORD)}
3585 stevensc 157
                    >
2629 stevensc 158
                    <i className="fa fa-lock" />Cambiar clave
1 www 159
                  </a>
160
                  <a
3585 stevensc 161
                    href="#"
2629 stevensc 162
                    className={`nav-item nav-link`}
1 www 163
                    onClick={(e) => handleChangeTab(e, TABS.CHANGE_IMAGE)}
3585 stevensc 164
                    >
2629 stevensc 165
                    <i className="fa fa-image" />Cambiar imagen
1 www 166
                  </a>
167
                  <a
3585 stevensc 168
                    href="#"
2629 stevensc 169
                    className={`nav-item nav-link`}
1 www 170
                    onClick={(e) => handleChangeTab(e, TABS.LOCATION)}
3585 stevensc 171
                    >
2629 stevensc 172
                    <i className="fa fa-map-marker" />Ubicación
1 www 173
                  </a>
174
                  <a
3585 stevensc 175
                    href="#"
2629 stevensc 176
                    className={`nav-item nav-link`}
1 www 177
                    onClick={(e) => handleChangeTab(e, TABS.PRIVACY)}
3585 stevensc 178
                    >
2629 stevensc 179
                    <i className="fa fa-user-secret" />Privacidad
1 www 180
                  </a>
181
                  <a
3585 stevensc 182
                    href="#"
2629 stevensc 183
                    className={`nav-item nav-link`}
1 www 184
                    onClick={(e) => handleChangeTab(e, TABS.SOCIAL_NETWORKS)}
3585 stevensc 185
                    >
2629 stevensc 186
                    <i className="fa fa-facebook" />Redes Sociales
1 www 187
                  </a>
188
                  <a
3585 stevensc 189
                    href="#"
2629 stevensc 190
                    className={`nav-item nav-link`}
1 www 191
                    onClick={(e) => handleChangeTab(e, TABS.TRANSACTIONS)}
3585 stevensc 192
                    >
2629 stevensc 193
                    <i className="fa fa-money" />Transacciones
1 www 194
                  </a>
1963 steven 195
                  <a
3585 stevensc 196
                    href="#"
2629 stevensc 197
                    className={`nav-item nav-link`}
1963 steven 198
                    onClick={(e) => handleChangeTab(e, TABS.CLOSE_ACCOUNT)}
199
                  >
200
                    <i className="fa fa-trash"></i>Cerrar cuenta
201
                  </a>
1 www 202
                </StyledNavTabs>
203
              </div>
204
            </div>
2646 stevensc 205
            <div className="col-lg-8">
1966 steven 206
              <div className="tab-content h-100" id="nav-tabContent">
207
                <div className="tab-pane fade active show h-100">
208
                  {TabRender()}
209
                </div>
1 www 210
              </div>
211
            </div>
212
          </div>
213
        </div>
214
      </div>
215
    </section>
216
  );
217
};
218
 
219
export default withRouter(AccountSettings);