fix: zod validation

This commit is contained in:
Christel Westerberg
2024-05-30 11:33:11 +02:00
parent 37843af507
commit 15b56fd0dd
5 changed files with 40 additions and 27 deletions

View File

@@ -16,7 +16,7 @@ export default async function Header({
lang, lang,
languageSwitcher, languageSwitcher,
}: LangParams & { languageSwitcher: React.ReactNode }) { }: LangParams & { languageSwitcher: React.ReactNode }) {
const data = await serverClient().contentstack.config.header({ lang }) const data = await serverClient().contentstack.config.header()
const session = await auth() const session = await auth()
const homeHref = homeHrefs[env.NODE_ENV][lang] const homeHref = homeHrefs[env.NODE_ENV][lang]

View File

@@ -190,10 +190,22 @@ export type AccountPageRefsDataRaw = z.infer<
> >
export const validateLanguageSwitcherData = z.object({ export const validateLanguageSwitcherData = z.object({
en: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), en: z
da: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), .object({ url: z.string().optional(), isExternal: z.boolean() })
de: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), .nullable(),
fi: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), da: z
sv: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), .object({ url: z.string().optional(), isExternal: z.boolean() })
no: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), .nullable(),
de: z
.object({ url: z.string().optional(), isExternal: z.boolean() })
.nullable(),
fi: z
.object({ url: z.string().optional(), isExternal: z.boolean() })
.nullable(),
sv: z
.object({ url: z.string().optional(), isExternal: z.boolean() })
.nullable(),
no: z
.object({ url: z.string().optional(), isExternal: z.boolean() })
.nullable(),
}) })

View File

@@ -1,9 +0,0 @@
import z from "zod"
import { Lang } from "@/constants/languages"
export const headerInput = z
.object({
lang: z.nativeEnum(Lang),
})
.optional()

View File

@@ -4,7 +4,6 @@ import { request } from "@/lib/graphql/request"
import { internalServerError, notFound } from "@/server/errors/trpc" import { internalServerError, notFound } from "@/server/errors/trpc"
import { contentstackProcedure, publicProcedure, router } from "@/server/trpc" import { contentstackProcedure, publicProcedure, router } from "@/server/trpc"
import { headerInput } from "./input"
import { import {
type ContactConfigData, type ContactConfigData,
HeaderData, HeaderData,
@@ -35,12 +34,11 @@ export const configQueryRouter = router({
return validatedContactConfigConfig.data.all_contact_config.items[0] return validatedContactConfigConfig.data.all_contact_config.items[0]
}), }),
header: publicProcedure.input(headerInput).query(async ({ input, ctx }) => { header: publicProcedure.query(async ({ ctx }) => {
const locale = input?.lang || ctx.lang
const response = await request<HeaderDataRaw>( const response = await request<HeaderDataRaw>(
GetCurrentHeader, GetCurrentHeader,
{ locale }, { locale: ctx.lang },
{ next: { tags: [`header-${locale}`] } } { next: { tags: [`header-${ctx.lang}`] } }
) )
if (!response.data) { if (!response.data) {

View File

@@ -308,10 +308,22 @@ export type LoyaltyPageRefsDataRaw = z.infer<
> >
export const validateLanguageSwitcherData = z.object({ export const validateLanguageSwitcherData = z.object({
en: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), en: z
da: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), .object({ url: z.string().optional(), isExternal: z.boolean() })
de: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), .nullable(),
fi: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), da: z
sv: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), .object({ url: z.string().optional(), isExternal: z.boolean() })
no: z.object({ url: z.string(), isExternal: z.boolean() }).nullable(), .nullable(),
de: z
.object({ url: z.string().optional(), isExternal: z.boolean() })
.nullable(),
fi: z
.object({ url: z.string().optional(), isExternal: z.boolean() })
.nullable(),
sv: z
.object({ url: z.string().optional(), isExternal: z.boolean() })
.nullable(),
no: z
.object({ url: z.string().optional(), isExternal: z.boolean() })
.nullable(),
}) })