Rev 3416 | Rev 3433 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import { useEffect, useMemo } from 'react'
import { useFetch } from '@hooks'
export function useNavbar() {
const { data: menuData } = useFetch('/helpers/menu')
const {
data: session,
refetch,
isLoading
} = useFetch(menuData?.routeCheckSession)
const memoMenu = useMemo(() => {
if (!menuData.menu) return []
const menu = structuredClone(menuData?.menu)
const comunicationIndex = menu.findIndex(
(item) => item.label === 'Comunicación'
)
const comunication = menu[comunicationIndex]
const newComunicationChilds = comunication.childs.map((child) => {
if (child.label === 'Notificaciones') {
return { ...child, count: session?.total_notifications }
}
if (child.label === 'Inmail') {
return { ...child, count: session?.total_messages }
}
return child
})
comunication.childs = newComunicationChilds
menu[comunicationIndex] = comunication
return menu
}, [menuData, session])
useEffect(() => {
const sessionInterval = setTimeout(() => {
!isLoading && refetch()
}, 3000)
return () => {
clearInterval(sessionInterval)
}
}, [isLoading])
return {
menuData: { ...menuData, menu: memoMenu },
totalNotifications: session?.total_notifications ?? 0,
totalMessages: session?.total_messages ?? 0
}
}