From b99c30f3d2bcb2b14b639c4534b6695b037d9a85 Mon Sep 17 00:00:00 2001 From: Juan Franco <91078895+m1lestones@users.noreply.github.com> Date: Mon, 13 Apr 2026 03:34:34 -0400 Subject: [PATCH] fix: use eventType description and booking description correctly in CalendarEvent (#28818) Previously, CalendarEvent.description was incorrectly set to booking.description (attendee notes), and CalendarEvent.additionalNotes was not set at all. This caused confirmation emails to show attendee notes in the description field instead of the event type's description. Changes: - Set CalendarEvent.description to eventType.description (event type's description) - Set CalendarEvent.additionalNotes to booking.description (attendee's notes) - Updated buildCalendarEvent in addGuests.handler.ts - Updated buildCalEventFromBooking in buildCalEventFromBooking.ts - Updated CalendarEvent creation in confirm.handler.ts - Updated CalendarEvent creation in payment/getBooking.ts - Updated tests to verify both fields are set correctly Fixes #28818 --- packages/features/bookings/lib/payment/getBooking.ts | 3 ++- packages/lib/__tests__/buildCalEventFromBooking.test.ts | 7 +++++-- packages/lib/buildCalEventFromBooking.ts | 4 +++- .../server/routers/viewer/bookings/addGuests.handler.ts | 3 ++- .../trpc/server/routers/viewer/bookings/confirm.handler.ts | 3 ++- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/features/bookings/lib/payment/getBooking.ts b/packages/features/bookings/lib/payment/getBooking.ts index e8de09a82620ee..c24545fe77a3b1 100644 --- a/packages/features/bookings/lib/payment/getBooking.ts +++ b/packages/features/bookings/lib/payment/getBooking.ts @@ -180,7 +180,8 @@ export async function getBooking(bookingId: number) { type: booking?.eventType?.slug as string, title: booking.title, bookerUrl, - description: booking.description || undefined, + description: booking.eventType?.description || "", + additionalNotes: booking.description || null, startTime: booking.startTime.toISOString(), endTime: booking.endTime.toISOString(), customInputs: isPrismaObjOrUndefined(booking.customInputs), diff --git a/packages/lib/__tests__/buildCalEventFromBooking.test.ts b/packages/lib/__tests__/buildCalEventFromBooking.test.ts index 1c61b6ca3c1c7f..e1195122bc90ba 100644 --- a/packages/lib/__tests__/buildCalEventFromBooking.test.ts +++ b/packages/lib/__tests__/buildCalEventFromBooking.test.ts @@ -34,7 +34,7 @@ const createAttendee = (overrides = {}) => ({ const createBooking = (overrides = {}) => ({ title: "Test Booking", - description: "Test Description", + description: "Test Attendee Notes", startTime: new Date("2023-04-01T10:00:00Z"), endTime: new Date("2023-04-01T11:00:00Z"), userPrimaryEmail: "user@example.com", @@ -42,6 +42,7 @@ const createBooking = (overrides = {}) => ({ attendees: [createAttendee()], eventType: { title: "Test Event Type", + description: "Test Event Type Description", seatsPerTimeSlot: 5, seatsShowAttendees: true, recurringEvent: { @@ -96,7 +97,8 @@ describe("buildCalEventFromBooking", () => { expect(result).toEqual({ title: booking.title, type: booking.eventType.title, - description: booking.description, + description: booking.eventType.description, + additionalNotes: booking.description, startTime: dayjs(booking.startTime).format(), endTime: dayjs(booking.endTime).format(), organizer: { @@ -162,6 +164,7 @@ describe("buildCalEventFromBooking", () => { title: booking.title, type: "", description: "", + additionalNotes: null, startTime: "", endTime: "", organizer: { diff --git a/packages/lib/buildCalEventFromBooking.ts b/packages/lib/buildCalEventFromBooking.ts index f34de3458d5c38..beddb8b4e123e1 100644 --- a/packages/lib/buildCalEventFromBooking.ts +++ b/packages/lib/buildCalEventFromBooking.ts @@ -35,6 +35,7 @@ type Organizer = { type EventType = { title: string; + description: string | null; recurringEvent: Prisma.JsonValue | null; seatsPerTimeSlot: number | null; seatsShowAttendees: boolean | null; @@ -91,7 +92,8 @@ export const buildCalEventFromBooking = async ({ return { title: booking.title || "", type: (booking.eventType?.title as string) || booking.title || "", - description: booking.description || "", + description: booking.eventType?.description || "", + additionalNotes: booking.description || null, startTime: booking.startTime ? dayjs(booking.startTime).format() : "", endTime: booking.endTime ? dayjs(booking.endTime).format() : "", organizer: { diff --git a/packages/trpc/server/routers/viewer/bookings/addGuests.handler.ts b/packages/trpc/server/routers/viewer/bookings/addGuests.handler.ts index a63ce9a8e9eda5..9be24cb6b3e2f6 100644 --- a/packages/trpc/server/routers/viewer/bookings/addGuests.handler.ts +++ b/packages/trpc/server/routers/viewer/bookings/addGuests.handler.ts @@ -327,7 +327,8 @@ export async function buildCalendarEvent( const evt: CalendarEvent = { title: booking.title || "", type: (booking.eventType?.title as string) || booking?.title || "", - description: booking.description || "", + description: booking.eventType?.description || "", + additionalNotes: booking.description || null, startTime: booking.startTime ? dayjs(booking.startTime).format() : "", endTime: booking.endTime ? dayjs(booking.endTime).format() : "", organizer: { diff --git a/packages/trpc/server/routers/viewer/bookings/confirm.handler.ts b/packages/trpc/server/routers/viewer/bookings/confirm.handler.ts index 8b94cf04857d29..937527fec7d7ac 100644 --- a/packages/trpc/server/routers/viewer/bookings/confirm.handler.ts +++ b/packages/trpc/server/routers/viewer/bookings/confirm.handler.ts @@ -317,7 +317,8 @@ export const confirmHandler = async ({ ctx, input }: ConfirmOptions) => { const evt: CalendarEvent = { type: booking?.eventType?.slug as string, title: booking.title, - description: booking.description, + description: booking.eventType?.description || "", + additionalNotes: booking.description || null, bookerUrl, // TODO: Remove the usage of `bookingFields` in computing responses. We can do that by storing `label` with the response. Also, this would allow us to correctly show the label for a field even after the Event Type has been deleted. ...getCalEventResponses({