Rev 5399 | 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'
import { useDispatch } from 'react-redux'
import { setIntlLabels } from '../../../redux/intl/intl.action'
const Navbar = ({ navbarVars, labels }) => {
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)
const dispatch = useDispatch()
useEffect(() => {
dispatch(setIntlLabels(labels))
}, [])
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-xl-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>
<UserImageDropdown
image={image}
fullName={fullName}
linkAdmin={linkAdmin}
linkImpersonate={linkImpersonate}
sessionImage={sessionImage}
/>
</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