Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 1966 | Rev 2633 | 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">
129
          <div className="row">
130
            <div className="col-lg-3">
131
              <div className="acc-leftbar">
132
                <StyledNavTabs
133
                  className="nav nav-tabs"
134
                  id="nav-tab"
135
                  role="tablist"
136
                >
137
                  <a
2629 stevensc 138
                    className={`nav-item nav-link`}
1 www 139
                    onClick={(e) => handleChangeTab(e, TABS.BASIC)}
140
                  >
2629 stevensc 141
                    <i className="la la-user" />Básica
1 www 142
                  </a>
143
                  <a
2629 stevensc 144
                    className={`nav-item nav-link`}
1 www 145
                    onClick={(e) => handleChangeTab(e, TABS.NOTIFICATIONS)}
146
                  >
2629 stevensc 147
                    <i className="la la-cogs" />Notificaciones
1 www 148
                  </a>
149
                  <a
2629 stevensc 150
                    className={`nav-item nav-link`}
1 www 151
                    onClick={(e) => handleChangeTab(e, TABS.CHANGE_PASSWORD)}
152
                  >
2629 stevensc 153
                    <i className="fa fa-lock" />Cambiar clave
1 www 154
                  </a>
155
                  <a
2629 stevensc 156
                    className={`nav-item nav-link`}
1 www 157
                    onClick={(e) => handleChangeTab(e, TABS.CHANGE_IMAGE)}
158
                  >
2629 stevensc 159
                    <i className="fa fa-image" />Cambiar imagen
1 www 160
                  </a>
161
                  <a
2629 stevensc 162
                    className={`nav-item nav-link`}
1 www 163
                    onClick={(e) => handleChangeTab(e, TABS.LOCATION)}
164
                  >
2629 stevensc 165
                    <i className="fa fa-map-marker" />Ubicación
1 www 166
                  </a>
167
                  <a
2629 stevensc 168
                    className={`nav-item nav-link`}
1 www 169
                    onClick={(e) => handleChangeTab(e, TABS.PRIVACY)}
170
                  >
2629 stevensc 171
                    <i className="fa fa-user-secret" />Privacidad
1 www 172
                  </a>
173
                  <a
2629 stevensc 174
                    className={`nav-item nav-link`}
1 www 175
                    onClick={(e) => handleChangeTab(e, TABS.SOCIAL_NETWORKS)}
176
                  >
2629 stevensc 177
                    <i className="fa fa-facebook" />Redes Sociales
1 www 178
                  </a>
179
                  <a
2629 stevensc 180
                    className={`nav-item nav-link`}
1 www 181
                    onClick={(e) => handleChangeTab(e, TABS.TRANSACTIONS)}
182
                  >
2629 stevensc 183
                    <i className="fa fa-money" />Transacciones
1 www 184
                  </a>
1963 steven 185
                  <a
2629 stevensc 186
                    className={`nav-item nav-link`}
1963 steven 187
                    onClick={(e) => handleChangeTab(e, TABS.CLOSE_ACCOUNT)}
188
                  >
189
                    <i className="fa fa-trash"></i>Cerrar cuenta
190
                  </a>
1 www 191
                </StyledNavTabs>
192
              </div>
193
            </div>
194
            <div className="col-lg-9">
1966 steven 195
              <div className="tab-content h-100" id="nav-tabContent">
196
                <div className="tab-pane fade active show h-100">
197
                  {TabRender()}
198
                </div>
1 www 199
              </div>
200
            </div>
201
          </div>
202
        </div>
203
      </div>
204
    </section>
205
  );
206
};
207
 
208
export default withRouter(AccountSettings);