Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2778 | Rev 3432 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import { useMemo } from "react";

import { useFetch } from "@hooks";

export function useNavbar() {
  const { data: menuData } = useFetch("/helpers/menu");
  const { data: session } = 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]);

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