feat(SW-237): Updated typings and code optimizations
This commit is contained in:
@@ -6,10 +6,10 @@ export default async function MyPagesLayout({
|
|||||||
bookingwidget,
|
bookingwidget,
|
||||||
breadcrumbs,
|
breadcrumbs,
|
||||||
children,
|
children,
|
||||||
}: React.PropsWithChildren & {
|
}: React.PropsWithChildren<{
|
||||||
bookingwidget: React.ReactNode
|
bookingwidget: React.ReactNode
|
||||||
breadcrumbs: React.ReactNode
|
breadcrumbs: React.ReactNode
|
||||||
}) {
|
}>) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{bookingwidget}
|
{bookingwidget}
|
||||||
|
|||||||
@@ -255,3 +255,23 @@ const validateFooterRefConfigSchema = z.object({
|
|||||||
})
|
})
|
||||||
|
|
||||||
export type FooterRefDataRaw = z.infer<typeof validateFooterRefConfigSchema>
|
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 { metrics } from "@opentelemetry/api"
|
||||||
|
import { ValueOf } from "next/dist/shared/lib/constants"
|
||||||
|
|
||||||
import { GetContactConfig } from "@/lib/graphql/Query/ContactConfig.graphql"
|
import { GetContactConfig } from "@/lib/graphql/Query/ContactConfig.graphql"
|
||||||
import {
|
import {
|
||||||
@@ -34,10 +35,13 @@ import {
|
|||||||
HeaderData,
|
HeaderData,
|
||||||
HeaderDataRaw,
|
HeaderDataRaw,
|
||||||
HeaderRefDataRaw,
|
HeaderRefDataRaw,
|
||||||
|
validateBookingWidgetToggleSchema,
|
||||||
|
ValidateBookingWidgetToggleType,
|
||||||
validateContactConfigSchema,
|
validateContactConfigSchema,
|
||||||
validateFooterConfigSchema,
|
validateFooterConfigSchema,
|
||||||
validateHeaderConfigSchema,
|
validateHeaderConfigSchema,
|
||||||
} from "./output"
|
} from "./output"
|
||||||
|
import { ContentTypeEnum } from "@/types/requests/contentType"
|
||||||
|
|
||||||
const meter = metrics.getMeter("trpc.contentstack.base")
|
const meter = metrics.getMeter("trpc.contentstack.base")
|
||||||
// OpenTelemetry metrics: ContactConfig
|
// OpenTelemetry metrics: ContactConfig
|
||||||
@@ -349,46 +353,57 @@ export const baseQueryRouter = router({
|
|||||||
return failedResponse
|
return failedResponse
|
||||||
}
|
}
|
||||||
let GetPageSettings = ""
|
let GetPageSettings = ""
|
||||||
let pageType = contentType.replaceAll("-", "_")
|
const contentTypeCMS = <ValueOf<typeof ContentTypeEnum>>(
|
||||||
|
contentType.replaceAll("-", "_")
|
||||||
|
)
|
||||||
|
|
||||||
switch (contentType) {
|
switch (contentTypeCMS) {
|
||||||
case "account-page":
|
case ContentTypeEnum.accountPage:
|
||||||
GetPageSettings = GetAccountPageSettings
|
GetPageSettings = GetAccountPageSettings
|
||||||
break
|
break
|
||||||
case "loyalty-page":
|
case ContentTypeEnum.loyaltyPage:
|
||||||
GetPageSettings = GetLoyaltyPageSettings
|
GetPageSettings = GetLoyaltyPageSettings
|
||||||
break
|
break
|
||||||
case "content-page":
|
case ContentTypeEnum.contentPage:
|
||||||
GetPageSettings = GetContentPageSettings
|
GetPageSettings = GetContentPageSettings
|
||||||
break
|
break
|
||||||
case "hotel-page":
|
case ContentTypeEnum.hotelPage:
|
||||||
GetPageSettings = GetHotelPageSettings
|
GetPageSettings = GetHotelPageSettings
|
||||||
break
|
break
|
||||||
case "current-blocks-page":
|
case ContentTypeEnum.currentBlocksPage:
|
||||||
GetPageSettings = GetCurrentBlocksPageSettings
|
GetPageSettings = GetCurrentBlocksPageSettings
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!GetPageSettings) {
|
if (!GetPageSettings) {
|
||||||
console.error("No proper Page type defined: ", contentType)
|
console.error("No proper Content type defined: ", contentType)
|
||||||
return failedResponse
|
return failedResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await request<any>(GetPageSettings, {
|
const response = await request<ValidateBookingWidgetToggleType>(
|
||||||
uid: uid,
|
GetPageSettings,
|
||||||
locale: lang,
|
{
|
||||||
})
|
uid: uid,
|
||||||
|
locale: lang,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
if (!response.data) {
|
const bookingWidgetToggleData =
|
||||||
console.error("Flag hide_booking_widget fetch error: ", response)
|
validateBookingWidgetToggleSchema.safeParse(response.data)
|
||||||
|
if (!bookingWidgetToggleData.success) {
|
||||||
|
console.error(
|
||||||
|
"Flag hide_booking_widget fetch error: ",
|
||||||
|
bookingWidgetToggleData.error
|
||||||
|
)
|
||||||
return failedResponse
|
return failedResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
const hideBookingWidget =
|
const hideBookingWidget =
|
||||||
!!response.data[pageType]?.page_settings?.hide_booking_widget
|
bookingWidgetToggleData.data[contentTypeCMS]?.page_settings
|
||||||
|
?.hide_booking_widget
|
||||||
|
|
||||||
return {
|
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