diff --git a/packages/features/bookings/Booker/components/EventMeta.tsx b/packages/features/bookings/Booker/components/EventMeta.tsx index 367a433b5a..7c8d4c6331 100644 --- a/packages/features/bookings/Booker/components/EventMeta.tsx +++ b/packages/features/bookings/Booker/components/EventMeta.tsx @@ -1,5 +1,6 @@ import { m } from "framer-motion"; import dynamic from "next/dynamic"; +import { useEffect } from "react"; import { shallow } from "zustand/shallow"; import { useEmbedUiConfig, useIsEmbed } from "@calcom/embed-core/embed-iframe"; @@ -44,6 +45,13 @@ export const EventMeta = ({ const isEmbed = useIsEmbed(); const hideEventTypeDetails = isEmbed ? embedUiConfig.hideEventTypeDetails : false; + useEffect(() => { + //In case the event has lockTimeZone enabled ,set the timezone to event's attached availability timezone + if (event && event?.lockTimeZoneToggleOnBookingPage && event?.schedule?.timeZone) { + setTimezone(event.schedule?.timeZone); + } + }, [event, setTimezone]); + if (hideEventTypeDetails) { return null; } diff --git a/packages/features/eventtypes/lib/getPublicEvent.ts b/packages/features/eventtypes/lib/getPublicEvent.ts index e6794e8c02..df1343fcc2 100644 --- a/packages/features/eventtypes/lib/getPublicEvent.ts +++ b/packages/features/eventtypes/lib/getPublicEvent.ts @@ -44,6 +44,7 @@ const userSelect = Prisma.validator()({ bannerUrl: true, }, }, + defaultScheduleId: true, }); const publicEventSelect = Prisma.validator()({ @@ -107,6 +108,12 @@ const publicEventSelect = Prisma.validator()({ owner: { select: userSelect, }, + schedule: { + select: { + id: true, + timeZone: true, + }, + }, hidden: true, assignAllTeamMembers: true, }); @@ -253,7 +260,19 @@ export const getPublicEvent = async ( if (users === null) { throw new Error("Event has no owner"); } - + //In case the event schedule is not defined ,use the event owner's default schedule + if (!eventWithUserProfiles.schedule && eventWithUserProfiles.owner?.defaultScheduleId) { + const eventOwnerDefaultSchedule = await prisma.schedule.findUnique({ + where: { + id: eventWithUserProfiles.owner?.defaultScheduleId, + }, + select: { + id: true, + timeZone: true, + }, + }); + eventWithUserProfiles.schedule = eventOwnerDefaultSchedule; + } return { ...eventWithUserProfiles, bookerLayouts: bookerLayoutsSchema.parse(eventMetaData?.bookerLayouts || null),