feat(SW-66, SW-348): search functionality and ui

This commit is contained in:
Simon Emanuelsson
2024-08-28 10:47:57 +02:00
parent b9dbcf7d90
commit af850c90e7
437 changed files with 7663 additions and 9881 deletions

View File

@@ -1,62 +1,11 @@
import { z } from "zod"
export const getMetaDataSchema = z.object({
breadcrumbsTitle: z.string().optional(),
title: z.string().optional(),
description: z.string().optional(),
imageConnection: z
.object({
edges: z.array(
z.object({
node: z.object({
url: z.string(),
}),
})
),
})
.optional(),
})
import { page } from "../schemas/metadata"
const page = z.object({
web: z.object({
seo_metadata: z.object({
title: z.string().optional(),
description: z.string().optional(),
imageConnection: z
.object({
edges: z.array(
z.object({
node: z.object({
url: z.string(),
}),
})
),
})
.optional(),
}),
breadcrumbs: z.object({
title: z.string(),
}),
}),
system: z.object({
uid: z.string(),
}),
})
export type Page = z.infer<typeof page>
export const validateMyPagesMetaDataContentstackSchema = z.object({
account_page: page,
})
export type GetMyPagesMetaDataData = z.infer<
typeof validateMyPagesMetaDataContentstackSchema
>
export const validateLoyaltyPageMetaDataContentstackSchema = z.object({
export const getLoyaltyPageMetadataSchema = z.object({
loyalty_page: page,
})
export type GetLoyaltyPageMetaDataData = z.infer<
typeof validateLoyaltyPageMetaDataContentstackSchema
typeof getLoyaltyPageMetadataSchema
>

View File

@@ -1,12 +1,9 @@
import { GetLoyaltyPageMetaData } from "@/lib/graphql/Query/MetaDataLoyaltyPage.graphql"
import { GetMyPagesMetaData } from "@/lib/graphql/Query/MetaDataMyPages.graphql"
import { GetLoyaltyPageMetaData } from "@/lib/graphql/Query/LoyaltyPage/MetaData.graphql"
import { contentstackExtendedProcedureUID, router } from "@/server/trpc"
import {
type GetLoyaltyPageMetaDataData,
type GetMyPagesMetaDataData,
validateLoyaltyPageMetaDataContentstackSchema,
validateMyPagesMetaDataContentstackSchema,
getLoyaltyPageMetadataSchema,
} from "./output"
import { getMetaData, getResponse, type Variables } from "./utils"
@@ -18,38 +15,19 @@ async function getLoyaltyPageMetaData(variables: Variables) {
variables
)
const validatedMetaDataData =
validateLoyaltyPageMetaDataContentstackSchema.safeParse(response.data)
const validatedMetadata = getLoyaltyPageMetadataSchema.safeParse(
response.data
)
if (!validatedMetaDataData.success) {
if (!validatedMetadata.success) {
console.error(
`Failed to validate Loyaltypage MetaData Data - (uid: ${variables.uid})`
)
console.error(validatedMetaDataData.error)
console.error(validatedMetadata.error)
return null
}
return getMetaData(validatedMetaDataData.data.loyalty_page)
}
async function getMyPagesMetaData(variables: Variables) {
const response = await getResponse<GetMyPagesMetaDataData>(
GetMyPagesMetaData,
variables
)
const validatedMetaDataData =
validateMyPagesMetaDataContentstackSchema.safeParse(response.data)
if (!validatedMetaDataData.success) {
console.error(
`Failed to validate My Page MetaData Data - (uid: ${variables.uid})`
)
console.error(validatedMetaDataData.error)
return null
}
return getMetaData(validatedMetaDataData.data.account_page)
return getMetaData(validatedMetadata.data.loyalty_page)
}
export const metaDataQueryRouter = router({
@@ -60,8 +38,6 @@ export const metaDataQueryRouter = router({
}
switch (ctx.contentType) {
case PageTypeEnum.accountPage:
return await getMyPagesMetaData(variables)
case PageTypeEnum.loyaltyPage:
return await getLoyaltyPageMetaData(variables)
default:

View File

@@ -4,7 +4,7 @@ import { internalServerError, notFound } from "@/server/errors/trpc"
import { generateTag } from "@/utils/generateTag"
import { getMetaDataSchema, Page } from "./output"
import { getMetaDataSchema, Page } from "../schemas/metadata"
export type Variables = {
locale: Lang