31 lines
909 B
TypeScript
31 lines
909 B
TypeScript
"use client";
|
|
|
|
import { useEffect } from "react";
|
|
import { usePathname } from "next/navigation";
|
|
import { useQuery } from "@tanstack/react-query";
|
|
import { ENDPOINT, SITE_ID } from "@/shared/config";
|
|
import { useMenuStore } from "@/shared/lib";
|
|
import { MenuApi } from "../api/menu-service";
|
|
import { getCurrentMenu } from "./utils";
|
|
|
|
const MenuWrapper = ({ children }: { children: React.ReactNode }) => {
|
|
const pathname = usePathname();
|
|
const { data: menuRoles } = useQuery({
|
|
queryKey: [ENDPOINT.CMS_SERVICE.MENU_ROLES],
|
|
queryFn: () => MenuApi.getMenuRoles(SITE_ID),
|
|
});
|
|
const { setCurrentMenuInfo } = useMenuStore((state) => state);
|
|
|
|
useEffect(() => {
|
|
if (!menuRoles) return;
|
|
const currentMenu = getCurrentMenu(menuRoles, pathname ?? "");
|
|
|
|
if (!currentMenu) return;
|
|
setCurrentMenuInfo(currentMenu);
|
|
}, [menuRoles]);
|
|
|
|
return <>{children}</>;
|
|
};
|
|
|
|
export { MenuWrapper };
|