import type { SidebarItem } from "~/types/menuAkses/sidebar"; import type { PageAccess } from "~/types/menuAkses/access"; interface SidebarItemWithPermissions extends SidebarItem { permissions: string[]; } export function mergeSidebar( menuItems: SidebarItem[], allowedPages: PageAccess[] ): SidebarItem[] { const result: SidebarItem[] = []; for (const item of menuItems) { // Jika punya anak (children) //console.log('item', item); //console.log('allowedPages', allowedPages); if (Array.isArray(item.children)) { const filteredChildren = mergeSidebar(item.children, allowedPages); // console.log('ada array item', item); //console.log('filteredChildren', filteredChildren); if (filteredChildren.length > 0) { result.push({ ...item, children: filteredChildren, }); } //console.log('result', result); } // Jika punya path, cocokkan dengan json dummy / backend else if (item.to) { const matchPage = allowedPages.find( (page) => page.title?.toLowerCase() === item.title?.toLowerCase() && page.path?.toLowerCase() === item.to?.toLowerCase() ); //cocokkan title dan path link path halaman //console.log('match', matchPage,matchPage?.permissions); if (matchPage && matchPage.permissions?.includes("view")) { result.push({ ...item, permissions: matchPage?.permissions, } as SidebarItemWithPermissions); } } } return result; } export function mergeSidebarIcon(staticIcon: any[], IconAccess: any[]) { const result: any[] = []; for (const item of staticIcon) { const matchIcon = IconAccess.find((icon) => icon.id === item.id); //console.log('matchIcon', matchIcon); if (matchIcon) { result.push({ ...item, }); } } return result; }