fix: make web and breadcrumbs optional
This commit is contained in:
@@ -13,22 +13,25 @@ export const getBreadcrumbsSchema = z.array(
|
|||||||
const breadcrumbsRefsItems = z.object({
|
const breadcrumbsRefsItems = z.object({
|
||||||
items: z.array(
|
items: z.array(
|
||||||
z.object({
|
z.object({
|
||||||
web: z.object({
|
web: z
|
||||||
breadcrumbs: z.object({
|
.object({
|
||||||
parentsConnection: z.object({
|
breadcrumbs: z.object({
|
||||||
edges: z.array(
|
title: z.string(),
|
||||||
z.object({
|
parentsConnection: z.object({
|
||||||
node: z.object({
|
edges: z.array(
|
||||||
system: z.object({
|
z.object({
|
||||||
content_type_uid: z.string(),
|
node: z.object({
|
||||||
uid: z.string(),
|
system: z.object({
|
||||||
|
content_type_uid: z.string(),
|
||||||
|
uid: z.string(),
|
||||||
|
}),
|
||||||
}),
|
}),
|
||||||
}),
|
})
|
||||||
})
|
),
|
||||||
),
|
}),
|
||||||
}),
|
}),
|
||||||
}),
|
})
|
||||||
}),
|
.optional(),
|
||||||
system: z.object({
|
system: z.object({
|
||||||
content_type_uid: z.string(),
|
content_type_uid: z.string(),
|
||||||
uid: z.string(),
|
uid: z.string(),
|
||||||
@@ -48,29 +51,33 @@ export const validateLoyaltyPageBreadcrumbsRefsContentstackSchema = z.object({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const page = z.object({
|
const page = z.object({
|
||||||
web: z.object({
|
web: z
|
||||||
breadcrumbs: z.object({
|
.object({
|
||||||
title: z.string(),
|
breadcrumbs: z
|
||||||
parentsConnection: z.object({
|
.object({
|
||||||
edges: z.array(
|
title: z.string(),
|
||||||
z.object({
|
parentsConnection: z.object({
|
||||||
node: z.object({
|
edges: z.array(
|
||||||
web: z.object({
|
z.object({
|
||||||
breadcrumbs: z.object({
|
node: z.object({
|
||||||
title: z.string(),
|
web: z.object({
|
||||||
|
breadcrumbs: z.object({
|
||||||
|
title: z.string(),
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
system: z.object({
|
||||||
|
locale: z.nativeEnum(Lang),
|
||||||
|
uid: z.string(),
|
||||||
|
}),
|
||||||
|
url: z.string(),
|
||||||
}),
|
}),
|
||||||
}),
|
})
|
||||||
system: z.object({
|
),
|
||||||
locale: z.nativeEnum(Lang),
|
}),
|
||||||
uid: z.string(),
|
})
|
||||||
}),
|
.optional(),
|
||||||
url: z.string(),
|
})
|
||||||
}),
|
.optional(),
|
||||||
})
|
|
||||||
),
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
system: z.object({
|
system: z.object({
|
||||||
uid: z.string(),
|
uid: z.string(),
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -37,6 +37,10 @@ async function getLoyaltyPageBreadcrumbs(variables: Variables) {
|
|||||||
variables
|
variables
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (!refsResponse.data.all_loyalty_page.items[0].web?.breadcrumbs?.title) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
|
||||||
const validatedRefsData =
|
const validatedRefsData =
|
||||||
validateLoyaltyPageBreadcrumbsRefsContentstackSchema.safeParse(
|
validateLoyaltyPageBreadcrumbsRefsContentstackSchema.safeParse(
|
||||||
refsResponse.data
|
refsResponse.data
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {
|
|||||||
} from "@/utils/generateTag"
|
} from "@/utils/generateTag"
|
||||||
import { removeMultipleSlashes } from "@/utils/url"
|
import { removeMultipleSlashes } from "@/utils/url"
|
||||||
|
|
||||||
import { BreadcrumbsRefsItems, getBreadcrumbsSchema,Page } from "./output"
|
import { BreadcrumbsRefsItems, getBreadcrumbsSchema, Page } from "./output"
|
||||||
|
|
||||||
import type { GetBreadcrumbsItems } from "@/types/requests/myPages/breadcrumbs"
|
import type { GetBreadcrumbsItems } from "@/types/requests/myPages/breadcrumbs"
|
||||||
import type { Edges } from "@/types/requests/utils/edges"
|
import type { Edges } from "@/types/requests/utils/edges"
|
||||||
@@ -17,8 +17,11 @@ import type { NodeRefs } from "@/types/requests/utils/refs"
|
|||||||
|
|
||||||
export function getConnections(refs: GetBreadcrumbsItems) {
|
export function getConnections(refs: GetBreadcrumbsItems) {
|
||||||
const connections: Edges<NodeRefs>[] = []
|
const connections: Edges<NodeRefs>[] = []
|
||||||
|
|
||||||
refs.items.forEach((ref) => {
|
refs.items.forEach((ref) => {
|
||||||
connections.push(ref.web.breadcrumbs.parentsConnection)
|
if (ref.web?.breadcrumbs) {
|
||||||
|
connections.push(ref.web.breadcrumbs.parentsConnection)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
return connections
|
return connections
|
||||||
}
|
}
|
||||||
@@ -98,7 +101,7 @@ export async function getResponse<T>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getBreadcrumbs(page: Page, lang: Lang) {
|
export function getBreadcrumbs(page: Page, lang: Lang) {
|
||||||
const parentBreadcrumbs = page.web.breadcrumbs.parentsConnection.edges.map(
|
const parentBreadcrumbs = page.web?.breadcrumbs?.parentsConnection.edges.map(
|
||||||
(breadcrumb) => {
|
(breadcrumb) => {
|
||||||
return {
|
return {
|
||||||
href: removeMultipleSlashes(
|
href: removeMultipleSlashes(
|
||||||
@@ -111,7 +114,7 @@ export function getBreadcrumbs(page: Page, lang: Lang) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
const pageBreadcrumb = {
|
const pageBreadcrumb = {
|
||||||
title: page.web.breadcrumbs.title,
|
title: page.web?.breadcrumbs?.title,
|
||||||
uid: page.system.uid,
|
uid: page.system.uid,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import type { AllRequestResponse } from "../utils/all"
|
|||||||
import type { Edges } from "../utils/edges"
|
import type { Edges } from "../utils/edges"
|
||||||
|
|
||||||
interface MyPagesBreadcrumbs {
|
interface MyPagesBreadcrumbs {
|
||||||
web: {
|
web?: {
|
||||||
breadcrumbs: {
|
breadcrumbs?: {
|
||||||
title: string
|
title: string
|
||||||
parentsConnection: Edges<{
|
parentsConnection: Edges<{
|
||||||
web: {
|
web: {
|
||||||
@@ -42,9 +42,10 @@ export interface GetBreadcrumbsItems {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface MyPagesBreadcrumbRefs extends System {
|
interface MyPagesBreadcrumbRefs extends System {
|
||||||
web: {
|
web?: {
|
||||||
breadcrumbs: {
|
breadcrumbs?: {
|
||||||
parentsConnection: Edges<System>
|
parentsConnection: Edges<System>
|
||||||
|
title: string
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user