feat(sw-187): updated typings to use schema

This commit is contained in:
Pontus Dreij
2024-09-11 16:09:17 +02:00
parent b01fca97ba
commit 800f639eb8
4 changed files with 34 additions and 42 deletions

View File

@@ -37,7 +37,7 @@ export default function FooterSecondaryNav({
`${link.type}_${lang}` as keyof typeof AppDownLoadLinks
]
}
alt={link.href.title}
alt=""
width={125}
height={40}
/>

View File

@@ -331,6 +331,20 @@ export const validateLinkItem = z
}
})
export const validateSecondaryLinks = z.array(
z.object({
title: z.string(),
links: z.array(validateLinkItem),
})
)
export const validateLinksWithType = z.array(
z.object({
type: z.string(),
href: validateExternalLink,
})
)
export const validateFooterConfigSchema = z
.object({
all_footer: z.object({
@@ -339,26 +353,11 @@ export const validateFooterConfigSchema = z
main_links: z.array(validateLinkItem),
app_downloads: z.object({
title: z.string(),
links: z.array(
z.object({
type: z.string(),
href: validateExternalLink,
})
),
links: validateLinksWithType,
}),
secondary_links: z.array(
z.object({
title: z.string(),
links: z.array(validateLinkItem),
})
),
secondary_links: validateSecondaryLinks,
social_media: z.object({
links: z.array(
z.object({
type: z.string(),
href: validateExternalLink,
})
),
links: validateLinksWithType,
}),
tertiary_links: z.array(validateLinkItem),
})

View File

@@ -583,7 +583,6 @@ export const baseQueryRouter = router({
const connections = getFooterConnections(validatedFooterRefs.data)
const footerUID = responseRef.data.all_footer.items[0].system.uid
// There's currently no error handling/validation for the responseRef, should it be added?
getFooterCounter.add(1, { lang: lang })
console.info(
"contentstack.footer start",

View File

@@ -1,40 +1,34 @@
import { z } from "zod"
import {
validateLinkItem,
validateLinksWithType,
validateSecondaryLinks,
} from "@/server/routers/contentstack/base/output"
import type { LanguageSwitcherData } from "@/types/requests/languageSwitcher"
export type FooterLink = {
isExternal: boolean
openInNewTab: boolean
title: string | undefined
url: string
}
export type FooterLink = z.output<typeof validateLinkItem>
export type FooterMainNavProps = {
mainLinks: FooterLink[]
}
type FooterSecondaryNavGroup = {
title: string
links: FooterLink[]
}
type FooterLinkWithType = {
href?:
| {
href: string
title: string
}
| undefined
type: string
}
type FooterSecondaryNavGroup = z.output<typeof validateSecondaryLinks>
type FooterLinkWithType = z.output<typeof validateLinksWithType>
type FooterAppDownloads = {
title: string
links: FooterLinkWithType[]
links: FooterLinkWithType
}
type FooterSocialMedia = {
links: FooterLinkWithType[]
links: FooterLinkWithType
}
export type FooterSecondaryNavProps = {
secondaryLinks: FooterSecondaryNavGroup[]
secondaryLinks: FooterSecondaryNavGroup
appDownloads: FooterAppDownloads
}