Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

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