Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2302 | Rev 2304 | 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 '@app/hooks/useFetch'

function useNavbar() {
  const { data: menuData } = useFetch('/helpers/menu')
  const { data: session, refetch } = useFetch(menuData?.routeCheckSession)

  const memoMenu = useMemo(() => {
    const menu = menuData?.menu
    const newMenu = menu?.map((item) => {
      if (menu.label !== 'Comunicación') return item

      const newItem = item.childs.map((child) => {
        if (child.label === 'Notificaciones') {
          return { ...child, count: session?.total_notifications }
        }

        if (child.label === 'Inmail') {
          return { ...child, count: session?.total_messages }
        }

        return item
      })

      return newItem
    })

    console.log(newMenu)

    return newMenu
  }, [menuData, session])

  useEffect(() => {
    const sessionInterval = setInterval(() => refetch(), 3000)

    return () => {
      clearInterval(sessionInterval)
    }
  }, [])

  return {
    menuData: { ...menuData, menu: memoMenu },
    totalNotifications: session?.total_notifications ?? 0,
    totalMessages: session?.total_messages ?? 0
  }
}

export default useNavbar