diff --git a/apps/common/features/app/(with-base-layout)/(pst)/layout.tsx b/apps/common/features/app/(with-base-layout)/(pst)/layout.tsx index 3f700d076..f181eb64f 100644 --- a/apps/common/features/app/(with-base-layout)/(pst)/layout.tsx +++ b/apps/common/features/app/(with-base-layout)/(pst)/layout.tsx @@ -1,6 +1,9 @@ "use client"; -import { useMenuStore } from "@/shared/lib"; +import { useQuery } from "@tanstack/react-query"; +import { MenuApi } from "@/entities/menu"; +import { ENDPOINT } from "@/shared/config"; +import { getCookie, useMenuStore } from "@/shared/lib"; import { PageLayout } from "@/shared/ui/page-layout"; export default function PostLayout({ @@ -8,13 +11,19 @@ export default function PostLayout({ }: { children: React.ReactNode; }) { + const menuCd = getCookie("menu-code-key"); const bbsInfo = useMenuStore((state) => state.bbsInfo); + const { data } = useQuery({ + queryKey: [ENDPOINT.CMS_SERVICE.MENUS, menuCd], + queryFn: () => MenuApi.getMenuInfo(menuCd!), + enabled: !!menuCd, + }); + + const menuPaths = data?.menuPath?.split(">").map((path) => path.trim()); + return ( - + {children} ); diff --git a/apps/common/features/src/entities/menu/api/menu-service.ts b/apps/common/features/src/entities/menu/api/menu-service.ts index 4424f8d37..055bc9371 100644 --- a/apps/common/features/src/entities/menu/api/menu-service.ts +++ b/apps/common/features/src/entities/menu/api/menu-service.ts @@ -1,14 +1,21 @@ import { client } from "@/shared/api"; import { ENDPOINT } from "@/shared/config"; -import type { MenuItem, MenuService } from "../model/menu-interface"; +import type { MenuInfo, MenuRole, MenuService } from "../model/menu-interface"; export class MenuApiService implements MenuService { - async getMenuRoles(siteId: string): Promise { - const response = await client.get( + async getMenuRoles(siteId: string): Promise { + const response = await client.get( `${ENDPOINT.CMS_SERVICE.MENU_ROLES}/${siteId}`, ); return response.data; } + + async getMenuInfo(menuCd: string): Promise { + const response = await client.get( + `${ENDPOINT.CMS_SERVICE.MENUS}/${menuCd}`, + ); + return response.data; + } } export const MenuApi = new MenuApiService(); diff --git a/apps/common/features/src/entities/menu/index.ts b/apps/common/features/src/entities/menu/index.ts index 04f63e38b..730326591 100644 --- a/apps/common/features/src/entities/menu/index.ts +++ b/apps/common/features/src/entities/menu/index.ts @@ -1,2 +1,2 @@ +export { MenuApi } from "./api/menu-service"; export { MenuWrapper } from "./lib/menu-wrapper"; -export type { MenuItem } from "./model/menu-interface"; diff --git a/apps/common/features/src/entities/menu/lib/utils.ts b/apps/common/features/src/entities/menu/lib/utils.ts index 1cf4514d9..bb2fadb88 100644 --- a/apps/common/features/src/entities/menu/lib/utils.ts +++ b/apps/common/features/src/entities/menu/lib/utils.ts @@ -1,9 +1,9 @@ -import type { MenuItem } from "../model/menu-interface"; +import type { MenuRole } from "../model/menu-interface"; export const getCurrentMenu = ( - menus: MenuItem[], + menus: MenuRole[], pathname: string, -): MenuItem | null => { +): MenuRole | null => { for (const menu of menus) { if ( menu.urlPath !== "" && diff --git a/apps/common/features/src/entities/menu/model/menu-interface.ts b/apps/common/features/src/entities/menu/model/menu-interface.ts index 12c7d007a..885e02745 100644 --- a/apps/common/features/src/entities/menu/model/menu-interface.ts +++ b/apps/common/features/src/entities/menu/model/menu-interface.ts @@ -1,11 +1,8 @@ -export interface MenuItem { +interface Menu { menuCd: number; menuKornNm: string; menuEngNm: string; - parentId: number | null; sortSeq: number; - iconNm?: string; - children: MenuItem[] | null; levelNo: number; urlPath: string; menuLnkgTypeCd: string; @@ -15,9 +12,30 @@ export interface MenuItem { useYn: string; otptYn: string; newWndwYn: string; +} + +export interface MenuRole extends Menu { + parentId: number | null; + iconNm?: string; + children: MenuRole[] | null; requiredUrlPath: boolean; } -export interface MenuService { - getMenuRoles(siteId: string): Promise; +export interface MenuInfo extends Menu { + siteId: string; + menuSubKornNm: string; + menuSubEngNm: string; + iconName: string; + menuLnkgTypeCdNm: string; + prntMenuCd: number; + evlUseYn: string; + menuLnkgSnNm: string; + menuPicUserUnqId: string; + menuPicUserUnqIdNm: string; + menuPicDsgnYmd: string; +} + +export interface MenuService { + getMenuRoles(siteId: string): Promise; + getMenuInfo(menuCd: string): Promise; }