Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5399 | 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 */
5128 stevensc 2
import React, { useEffect, useState } from 'react'
3
import NavLinks from './nav-links/NavLinks'
4
import ChatHelper from '../../../chat/chatHelper/ChatHelper'
5
import UserImageDropdown from './user-dropdown/UserImageDropdown'
6
import SearchInput from './searchbox/SearchInput'
7
import ResponsiveNavbar from './responsive-navbar/ResponsiveNavbar'
5399 stevensc 8
import { useDispatch } from 'react-redux'
9
import { setIntlLabels } from '../../../redux/intl/intl.action'
4250 stevensc 10
 
5399 stevensc 11
const Navbar = ({ navbarVars, labels }) => {
4250 stevensc 12
  const {
13
    image,
14
    fullName,
15
    companyVars,
16
    isChatPage,
17
    linkAdmin,
18
    linkImpersonate,
19
    routeCheckSession,
20
    logoForNavbar,
21
    menu: menuProps
5128 stevensc 22
  } = navbarVars
23
  const [navbarOpen, setNavbarOpen] = useState(false)
4250 stevensc 24
  const [sessionImage, setSessionImage] = useState(null)
5128 stevensc 25
  const [loading, setLoading] = useState(false)
5399 stevensc 26
  const dispatch = useDispatch()
4250 stevensc 27
 
28
  useEffect(() => {
5400 stevensc 29
    dispatch(setIntlLabels(labels))
5399 stevensc 30
  }, [])
31
 
32
  useEffect(() => {
5128 stevensc 33
    let timer
4250 stevensc 34
    if (!loading) {
5128 stevensc 35
      timer = setTimeout(() => checkSessionImage(), 1000)
4250 stevensc 36
    }
37
    return () => {
5128 stevensc 38
      clearTimeout(timer)
39
    }
4250 stevensc 40
  }, [loading])
41
 
42
  const checkSessionImage = async () => {
5128 stevensc 43
    setLoading(true)
4250 stevensc 44
    const session_image = sessionStorage.getItem('user_session_image')
45
    if (session_image) {
46
      await setSessionImage(session_image)
47
      sessionStorage.removeItem('user_session_image')
48
    }
5128 stevensc 49
    setLoading(false)
4250 stevensc 50
  }
51
 
52
  return (
53
    <>
54
      <nav className='navbar'>
4917 stevensc 55
        <a href="/" className='logo d-none d-xl-block'>
4250 stevensc 56
          <img src={logoForNavbar} alt="logo" />
57
        </a>
58
        <SearchInput />
59
        <div className='hamburgerIcon'>
4913 stevensc 60
          <i className="fa fa-bars text-gray" onClick={() => setNavbarOpen(!navbarOpen)} />
4250 stevensc 61
        </div>
62
        <nav className='navLinksContainer'>
63
          <NavLinks
4335 stevensc 64
            menuData={menuProps}
4250 stevensc 65
            companyVars={companyVars}
66
            sessionLink={routeCheckSession}
67
          />
68
        </nav>
4913 stevensc 69
        <UserImageDropdown
70
          image={image}
71
          fullName={fullName}
72
          linkAdmin={linkAdmin}
73
          linkImpersonate={linkImpersonate}
74
          sessionImage={sessionImage}
75
        />
4250 stevensc 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
 
5128 stevensc 92
export default Navbar