Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
2301 stevensc 1
import { useEffect, useMemo } from 'react'
2
 
3
import useFetch from '@app/hooks/useFetch'
4
 
5
function useNavbar() {
6
  const { data: menuData } = useFetch('/helpers/menu')
7
  const { data: session, refetch } = useFetch(menuData?.routeCheckSession)
8
 
9
  const memoMenu = useMemo(() => {
10
    const menu = menuData?.menu
2302 stevensc 11
    const newMenu = menu?.map((item) => {
2301 stevensc 12
      if (menu.label !== 'Comunicación') return item
13
 
14
      const newItem = item.childs.map((child) => {
15
        if (child.label === 'Notificaciones') {
16
          return { ...child, count: session?.total_notifications }
17
        }
18
 
19
        if (child.label === 'Inmail') {
20
          return { ...child, count: session?.total_messages }
21
        }
22
 
23
        return item
24
      })
25
 
26
      return newItem
27
    })
28
 
2303 stevensc 29
    console.log(newMenu)
30
 
2301 stevensc 31
    return newMenu
32
  }, [menuData, session])
33
 
34
  useEffect(() => {
35
    const sessionInterval = setInterval(() => refetch(), 3000)
36
 
37
    return () => {
38
      clearInterval(sessionInterval)
39
    }
40
  }, [])
41
 
42
  return {
43
    menuData: { ...menuData, menu: memoMenu },
44
    totalNotifications: session?.total_notifications ?? 0,
45
    totalMessages: session?.total_messages ?? 0
46
  }
47
}
48
 
49
export default useNavbar