Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

/* eslint-disable react/prop-types */
import React, { useEffect, useState } from "react";
import NavLinks from "./nav-links/NavLinks";
import ChatHelper from "../../../chat/chatHelper/ChatHelper";
import UserImageDropdown from "./user-dropdown/UserImageDropdown";
import SearchInput from "./searchbox/SearchInput";
import ResponsiveNavbar from "./responsive-navbar/ResponsiveNavbar";

const Navbar = ({ navbarVars }) => {

  const {
    image,
    fullName,
    companyVars,
    isChatPage,
    linkAdmin,
    linkImpersonate,
    routeCheckSession,
    logoForNavbar,
    menu: menuProps
  } = navbarVars;

  const [navbarOpen, setNavbarOpen] = useState(false);
  const [sessionImage, setSessionImage] = useState(null)
  const [loading, setLoading] = useState(false);

  useEffect(() => {
    let timer;
    if (!loading) {
      timer = setTimeout(() => checkSessionImage(), 1000);
    }
    return () => {
      clearTimeout(timer);
    };
  }, [loading])

  const checkSessionImage = async () => {
    setLoading(true);
    const session_image = sessionStorage.getItem('user_session_image')
    if (session_image) {
      await setSessionImage(session_image)
      sessionStorage.removeItem('user_session_image')
    }
    setLoading(false);
  }

  return (
    <>
      <nav className='navbar'>
        <a href="/" className='logo d-none d-md-block'>
          <img src={logoForNavbar} alt="logo" />
        </a>
        <SearchInput />
        <div className='hamburgerIcon'>
          <i
            className="fa fa-bars text-gray"
            onClick={() => setNavbarOpen(!navbarOpen)}
          />
        </div>
        <nav className='navLinksContainer'>
          <NavLinks
            menuData={menuProps}
            companyVars={companyVars}
            sessionLink={routeCheckSession}
          />
        </nav>
        <div className="d-none d-md-block order-4">
          <UserImageDropdown
            image={image}
            fullName={fullName}
            linkAdmin={linkAdmin}
            linkImpersonate={linkImpersonate}
            sessionImage={sessionImage}
          />
        </div>
      </nav>
      <ResponsiveNavbar
        show={navbarOpen}
        navbarVars={navbarVars}
        companyVars={companyVars}
        image={image}
        fullName={fullName}
        linkAdmin={linkAdmin}
        linkImpersonate={linkImpersonate}
        sessionImage={sessionImage}
      />
      {window.innerWidth < 1000 && !isChatPage && <ChatHelper />}
    </>
  )
}

export default Navbar