import { ValueOf } from "next/dist/shared/lib/constants" import { GetAccountPageSettings, GetContentPageSettings, GetCurrentBlocksPageSettings, GetHotelPageSettings, GetLoyaltyPageSettings, } from "@/lib/graphql/Query/BookingWidgetToggle.graphql" import { request } from "@/lib/graphql/request" import { contentstackBaseProcedure, router } from "@/server/trpc" import { generateTag } from "@/utils/generateTag" import { validateBookingWidgetToggleSchema, ValidateBookingWidgetToggleType, } from "./output" import { affix as bookingwidgetAffix } from "./utils" import { ContentTypeEnum } from "@/types/requests/contentType" export const bookingwidgetQueryRouter = router({ toggle: router({ get: contentstackBaseProcedure.query(async ({ ctx }) => { const failedResponse = { hideBookingWidget: false } const { contentType, uid, lang } = ctx // This condition is to handle 404 page case if (!contentType || !uid) { console.log("No proper params defined: ", contentType, uid) return failedResponse } let GetPageSettings = "" const contentTypeCMS = >( contentType.replaceAll("-", "_") ) switch (contentTypeCMS) { case ContentTypeEnum.accountPage: GetPageSettings = GetAccountPageSettings break case ContentTypeEnum.loyaltyPage: GetPageSettings = GetLoyaltyPageSettings break case ContentTypeEnum.contentPage: GetPageSettings = GetContentPageSettings break case ContentTypeEnum.hotelPage: GetPageSettings = GetHotelPageSettings break case ContentTypeEnum.currentBlocksPage: GetPageSettings = GetCurrentBlocksPageSettings break } if (!GetPageSettings) { console.error("No proper Content type defined: ", contentType) return failedResponse } const response = await request( GetPageSettings, { uid: uid, locale: lang, }, { next: { tags: [generateTag(lang, uid, bookingwidgetAffix)], }, } ) const bookingWidgetToggleData = validateBookingWidgetToggleSchema.safeParse(response.data) if (!bookingWidgetToggleData.success) { console.error( "Flag hide_booking_widget fetch error: ", bookingWidgetToggleData.error ) return failedResponse } const hideBookingWidget = !!bookingWidgetToggleData.data[contentTypeCMS]?.page_settings ?.hide_booking_widget return { hideBookingWidget, } }), }), })