feat(SW-237): Updated typings and code optimizations
This commit is contained in:
@@ -6,10 +6,10 @@ export default async function MyPagesLayout({
|
||||
bookingwidget,
|
||||
breadcrumbs,
|
||||
children,
|
||||
}: React.PropsWithChildren & {
|
||||
}: React.PropsWithChildren<{
|
||||
bookingwidget: React.ReactNode
|
||||
breadcrumbs: React.ReactNode
|
||||
}) {
|
||||
}>) {
|
||||
return (
|
||||
<>
|
||||
{bookingwidget}
|
||||
|
||||
@@ -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
|
||||
>
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}),
|
||||
})
|
||||
|
||||
7
types/requests/contentType.ts
Normal file
7
types/requests/contentType.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
export enum ContentTypeEnum {
|
||||
accountPage = "account_page",
|
||||
loyaltyPage = "loyalty_page",
|
||||
hotelPage = "hotel_page",
|
||||
contentPage = "content_page",
|
||||
currentBlocksPage = "current_blocks_page",
|
||||
}
|
||||
Reference in New Issue
Block a user