feat(SW-237): Updated typings and code optimizations

This commit is contained in:
Hrishikesh Vaipurkar
2024-08-26 16:53:52 +02:00
parent 4d25573289
commit ad2182a60b
4 changed files with 60 additions and 18 deletions

View File

@@ -6,10 +6,10 @@ export default async function MyPagesLayout({
bookingwidget,
breadcrumbs,
children,
}: React.PropsWithChildren & {
}: React.PropsWithChildren<{
bookingwidget: React.ReactNode
breadcrumbs: React.ReactNode
}) {
}>) {
return (
<>
{bookingwidget}

View File

@@ -255,3 +255,23 @@ const validateFooterRefConfigSchema = z.object({
})
export type FooterRefDataRaw = z.infer<typeof validateFooterRefConfigSchema>
const bookingWidgetToggleSchema = z
.object({
page_settings: z.object({
hide_booking_widget: z.boolean(),
}),
})
.optional()
export const validateBookingWidgetToggleSchema = z.object({
account_page: bookingWidgetToggleSchema,
loyalty_page: bookingWidgetToggleSchema,
content_page: bookingWidgetToggleSchema,
hotel_page: bookingWidgetToggleSchema,
current_blocks_page: bookingWidgetToggleSchema,
})
export type ValidateBookingWidgetToggleType = z.infer<
typeof validateBookingWidgetToggleSchema
>

View File

@@ -1,4 +1,5 @@
import { metrics } from "@opentelemetry/api"
import { ValueOf } from "next/dist/shared/lib/constants"
import { GetContactConfig } from "@/lib/graphql/Query/ContactConfig.graphql"
import {
@@ -34,10 +35,13 @@ import {
HeaderData,
HeaderDataRaw,
HeaderRefDataRaw,
validateBookingWidgetToggleSchema,
ValidateBookingWidgetToggleType,
validateContactConfigSchema,
validateFooterConfigSchema,
validateHeaderConfigSchema,
} from "./output"
import { ContentTypeEnum } from "@/types/requests/contentType"
const meter = metrics.getMeter("trpc.contentstack.base")
// OpenTelemetry metrics: ContactConfig
@@ -349,46 +353,57 @@ export const baseQueryRouter = router({
return failedResponse
}
let GetPageSettings = ""
let pageType = contentType.replaceAll("-", "_")
const contentTypeCMS = <ValueOf<typeof ContentTypeEnum>>(
contentType.replaceAll("-", "_")
)
switch (contentType) {
case "account-page":
switch (contentTypeCMS) {
case ContentTypeEnum.accountPage:
GetPageSettings = GetAccountPageSettings
break
case "loyalty-page":
case ContentTypeEnum.loyaltyPage:
GetPageSettings = GetLoyaltyPageSettings
break
case "content-page":
case ContentTypeEnum.contentPage:
GetPageSettings = GetContentPageSettings
break
case "hotel-page":
case ContentTypeEnum.hotelPage:
GetPageSettings = GetHotelPageSettings
break
case "current-blocks-page":
case ContentTypeEnum.currentBlocksPage:
GetPageSettings = GetCurrentBlocksPageSettings
break
}
if (!GetPageSettings) {
console.error("No proper Page type defined: ", contentType)
console.error("No proper Content type defined: ", contentType)
return failedResponse
}
const response = await request<any>(GetPageSettings, {
uid: uid,
locale: lang,
})
const response = await request<ValidateBookingWidgetToggleType>(
GetPageSettings,
{
uid: uid,
locale: lang,
}
)
if (!response.data) {
console.error("Flag hide_booking_widget fetch error: ", response)
const bookingWidgetToggleData =
validateBookingWidgetToggleSchema.safeParse(response.data)
if (!bookingWidgetToggleData.success) {
console.error(
"Flag hide_booking_widget fetch error: ",
bookingWidgetToggleData.error
)
return failedResponse
}
const hideBookingWidget =
!!response.data[pageType]?.page_settings?.hide_booking_widget
bookingWidgetToggleData.data[contentTypeCMS]?.page_settings
?.hide_booking_widget
return {
hideBookingWidget: hideBookingWidget,
hideBookingWidget,
}
}),
})

View File

@@ -0,0 +1,7 @@
export enum ContentTypeEnum {
accountPage = "account_page",
loyaltyPage = "loyalty_page",
hotelPage = "hotel_page",
contentPage = "content_page",
currentBlocksPage = "current_blocks_page",
}