Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
4250 stevensc 1
/* eslint-disable react/prop-types */
2
import React, { useEffect, useState } from "react";
3
import NavLinks from "./nav-links/NavLinks";
4263 stevensc 4
import ChatHelper from "../../../chat/chatHelper/ChatHelper";
4250 stevensc 5
import UserImageDropdown from "./user-dropdown/UserImageDropdown";
6
import SearchInput from "./searchbox/SearchInput";
7
import ResponsiveNavbar from "./responsive-navbar/ResponsiveNavbar";
8
 
9
const Navbar = ({ navbarVars }) => {
10
 
11
  const {
12
    image,
13
    fullName,
14
    companyVars,
15
    isChatPage,
16
    linkAdmin,
17
    linkImpersonate,
18
    routeCheckSession,
19
    logoForNavbar,
20
    menu: menuProps
21
  } = navbarVars;
22
 
23
  const [navbarOpen, setNavbarOpen] = useState(false);
24
  const [sessionImage, setSessionImage] = useState(null)
25
  const [loading, setLoading] = useState(false);
26
 
27
  useEffect(() => {
28
    let timer;
29
    if (!loading) {
30
      timer = setTimeout(() => checkSessionImage(), 1000);
31
    }
32
    return () => {
33
      clearTimeout(timer);
34
    };
35
  }, [loading])
36
 
37
  const checkSessionImage = async () => {
38
    setLoading(true);
39
    const session_image = sessionStorage.getItem('user_session_image')
40
    if (session_image) {
41
      await setSessionImage(session_image)
42
      sessionStorage.removeItem('user_session_image')
43
    }
44
    setLoading(false);
45
  }
46
 
47
  return (
48
    <>
49
      <nav className='navbar'>
50
        <a href="/" className='logo d-none d-md-block'>
51
          <img src={logoForNavbar} alt="logo" />
52
        </a>
53
        <SearchInput />
54
        <div className='hamburgerIcon'>
55
          <i
56
            className="fa fa-bars text-gray"
57
            onClick={() => setNavbarOpen(!navbarOpen)}
58
          />
59
        </div>
60
        <nav className='navLinksContainer'>
61
          <NavLinks
62
            menuData={JSON.parse(menuProps)}
63
            companyVars={companyVars}
64
            sessionLink={routeCheckSession}
65
          />
66
        </nav>
67
        <div className="d-none d-md-block order-4">
68
          <UserImageDropdown
69
            image={image}
70
            fullName={fullName}
71
            linkAdmin={linkAdmin}
72
            linkImpersonate={linkImpersonate}
73
            sessionImage={sessionImage}
74
          />
75
        </div>
76
      </nav>
77
      <ResponsiveNavbar
78
        show={navbarOpen}
79
        navbarVars={navbarVars}
80
        companyVars={companyVars}
81
        image={image}
82
        fullName={fullName}
83
        linkAdmin={linkAdmin}
84
        linkImpersonate={linkImpersonate}
85
        sessionImage={sessionImage}
86
      />
87
      {window.innerWidth < 1000 && !isChatPage && <ChatHelper />}
88
    </>
89
  )
90
}
91
 
92
export default Navbar