Files
web/components/MyPages/Sidebar/helpers.ts
2024-04-16 09:24:31 +02:00

31 lines
842 B
TypeScript

import { PageLinkEnum } from "@/types/requests/myPages/navigation"
import type {
NavigationItem,
MenuItem,
PageLink,
} from "@/types/requests/myPages/navigation"
function getURL(node: PageLink) {
switch (node.__typename) {
case PageLinkEnum.ContentPage:
return node.web.url
case PageLinkEnum.AccountPage:
case PageLinkEnum.LoyaltyPage:
return node.url
}
}
export function mapMenuItems(navigationItems: NavigationItem[]) {
return navigationItems.map(({ item }): MenuItem => {
const { node } = item.pageConnection.edges[0]
return {
linkText: item.link_text || node.title,
lang: node.system.locale,
subItems: item.sub_items ? mapMenuItems(item.sub_items) : null,
uid: node.system.uid,
url: `/${node.system.locale}/${getURL(node)}`.replaceAll("//+", "/"),
}
})
}