31 lines
842 B
TypeScript
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("//+", "/"),
|
|
}
|
|
})
|
|
}
|