Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 1963 | Rev 2633 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React, { useEffect, useState } from "react";
import { useLocation, withRouter } from "react-router";
import styled from "styled-components";
import BasicSettings from "./basic-settings/BasicSettings";
import Browsers from "./browsers/Browsers";
import ChangeImage from "./change-image/ChangeImage";
import ChangePassword from "./change-password/ChangePassword";
import Devices from "./devices/Devices";
import Ips from "./ips/Ips";
import Location from "./location/Location";
import Notifications from "./notifications/Notifications";
import Privacy from "./privacy/Privacy";
import SocialNetworks from "./social-networks/SocialNetworks";
import Transactions from "./transactions/Transactions";
import CloseAccount from "./close-account/CloseAccount";

const StyledNavTabs = styled.div`
  a {
    cursor: pointer;
    &.active {
      color: blue;
    }
  }
`;

const TABS = {
  BASIC: "BASIC",
  NOTIFICATIONS: "NOTIFICATIONS",
  CHANGE_PASSWORD: "CHANGE_PASSWORD",
  CHANGE_IMAGE: "CHANGE_IMAGE",
  LOCATION: "LOCAITON",
  PRIVACY: "PRIVACY",
  SOCIAL_NETWORKS: "SOCIAL_NETWORKS",
  TRANSACTIONS: "TRANSACTIONS",
  BROWSERS: "BROWSERS",
  IPS: "IPS",
  DEVICES: "DEVICES",
  CLOSE_ACCOUNT: "CLOSE_ACCOUNT",
};

const AccountSettings = (props) => {
  // props destructuring
  const {
    facebook,
    google,
    twitter,
    socialNetworkRoutes,
    routeTransactions,
    routeAddFunds,
    routeBrowsers,
    routeIPs,
    routeDevices,
    balance,
    amounts,
  } = props.backendVars;

  const [currentTab, setCurrentTab] = useState(TABS.BASIC);

  const handleChangeTab = (event, tab, param) => {
    event.preventDefault();
    setCurrentTab(tab);
  };

  const TabRender = () => {
    switch (currentTab) {
      case TABS.BASIC:
        return <BasicSettings />;
      case TABS.NOTIFICATIONS:
        return <Notifications />;
      case TABS.CHANGE_PASSWORD:
        return <ChangePassword />;
      case TABS.CHANGE_IMAGE:
        return <ChangeImage />;
      case TABS.LOCATION:
        return <Location />;
      case TABS.PRIVACY:
        return <Privacy />;
      case TABS.SOCIAL_NETWORKS:
        return (
          <SocialNetworks
            facebook={facebook}
            twitter={twitter}
            google={google}
            socialNetworkRoutes={socialNetworkRoutes}
          />
        );
      case TABS.TRANSACTIONS:
        return (
          <Transactions
            routeTransactions={routeTransactions}
            routeAddFunds={routeAddFunds}
            balance={balance}
            amounts={amounts}
          />
        );
      case TABS.BROWSERS:
        return <Browsers routeBrowsers={routeBrowsers} />;
      case TABS.IPS:
        return <Ips routeIPs={routeIPs} />;
      case TABS.DEVICES:
        return <Devices routeDevices={routeDevices} />;
      case TABS.CLOSE_ACCOUNT:
        return <CloseAccount />;
      case TABS.default:
        return <BasicSettings />;
    }
  };

  useEffect(() => {
    const searchParam = new URLSearchParams(props.location.search);
    const tab = searchParam.get("tab");
    if (tab === "nav-basic") setCurrentTab(TABS.BASIC);
    if (tab === "nav-notification") setCurrentTab(TABS.NOTIFICATIONS);
    if (tab === "nav-password") setCurrentTab(TABS.CHANGE_PASSWORD);
    if (tab === "nav-image") setCurrentTab(TABS.CHANGE_IMAGE);
    if (tab === "nav-location") setCurrentTab(TABS.LOCATION);
    if (tab === "nav-privacy") setCurrentTab(TABS.PRIVACY);
    if (tab === "nav-social-networks") setCurrentTab(TABS.SOCIAL_NETWORKS);
    if (tab === "nav-transactions") setCurrentTab(TABS.TRANSACTIONS);
    if (tab === "nav-browsers") setCurrentTab(TABS.BROWSERS);
    if (tab === "nav-ips") setCurrentTab(TABS.IPS);
    if (tab === "nav-devices") setCurrentTab(TABS.DEVICES);
  }, [props.location]);

  return (
    <section className="profile-account-setting">
      <div className="container">
        <div className="account-tabs-setting">
          <div className="row">
            <div className="col-lg-3">
              <div className="acc-leftbar">
                <StyledNavTabs
                  className="nav nav-tabs"
                  id="nav-tab"
                  role="tablist"
                >
                  <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.BASIC ? "active" : ""
                    }`}
                    id="nav-basic-tab"
                    onClick={(e) => handleChangeTab(e, TABS.BASIC)}
                  >
                    <i className="la la-user"></i>Básica
                  </a>
                  <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.NOTIFICATIONS ? "active" : ""
                    }`}
                    id="nav-acc-tab"
                    onClick={(e) => handleChangeTab(e, TABS.NOTIFICATIONS)}
                  >
                    <i className="la la-cogs"></i>Notificaciones
                  </a>
                  <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.CHANGE_PASSWORD ? "active" : ""
                    }`}
                    id="nav-password-tab"
                    onClick={(e) => handleChangeTab(e, TABS.CHANGE_PASSWORD)}
                  >
                    <i className="fa fa-lock"></i>Cambiar clave
                  </a>
                  <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.CHANGE_IMAGE ? "active" : ""
                    }`}
                    id="nav-image-tab"
                    onClick={(e) => handleChangeTab(e, TABS.CHANGE_IMAGE)}
                  >
                    <i className="fa fa-image"></i>Cambiar imagen
                  </a>
                  <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.LOCATION ? "active" : ""
                    }`}
                    id="nav-location-tab"
                    onClick={(e) => handleChangeTab(e, TABS.LOCATION)}
                  >
                    <i className="fa fa-map-marker"></i>Ubicación
                  </a>
                  <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.PRIVACY ? "active" : ""
                    }`}
                    id="nav-privacy-tab"
                    onClick={(e) => handleChangeTab(e, TABS.PRIVACY)}
                  >
                    <i className="fa fa-user-secret"></i>Privacidad
                  </a>
                  <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.SOCIAL_NETWORKS ? "active" : ""
                    }`}
                    id="nav-social-networks-tab"
                    onClick={(e) => handleChangeTab(e, TABS.SOCIAL_NETWORKS)}
                  >
                    <i className="fa fa-facebook"></i>Redes Sociales
                  </a>
                  <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.TRANSACTIONS ? "active" : ""
                    }`}
                    id="nav-social-networks-tab"
                    onClick={(e) => handleChangeTab(e, TABS.TRANSACTIONS)}
                  >
                    <i className="fa fa-money"></i>Transacciones
                  </a>
                  <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.CLOSE_ACCOUNT ? "active" : ""
                    }`}
                    id="nav-social-networks-tab"
                    onClick={(e) => handleChangeTab(e, TABS.CLOSE_ACCOUNT)}
                  >
                    <i className="fa fa-trash"></i>Cerrar cuenta
                  </a>
                  {/* <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.BROWSERS ? "active" : ""
                    }`}
                    id="nav-social-networks-tab"
                    onClick={(e) => handleChangeTab(e, TABS.BROWSERS)}
                  >
                    <i className="fa fa-internet-explorer"></i>Navegadores
                  </a>
                  <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.IPS ? "active" : ""
                    }`}
                    id="nav-social-networks-tab"
                    onClick={(e) => handleChangeTab(e, TABS.IPS)}
                  >
                    <i className="fa fa-wifi"></i>Conexiones
                  </a>
                  <a
                    className={`nav-item nav-link ${
                      currentTab === TABS.DEVICES ? "active" : ""
                    }`}
                    id="nav-social-networks-tab"
                    onClick={(e) => handleChangeTab(e, TABS.DEVICES)}
                  >
                    <i className="fa fa-tablet"></i>Dispositivos
                  </a> */}
                </StyledNavTabs>
              </div>
              {/* <!--acc-leftbar end--> */}
            </div>

            <div className="col-lg-9">
              <div className="tab-content h-100" id="nav-tabContent">
                <div className="tab-pane fade active show h-100">
                  {TabRender()}
                </div>
              </div>
            </div>
          </div>
        </div>
        {/* <!--account-tabs-setting end--> */}
      </div>
    </section>
  );
};

export default withRouter(AccountSettings);