From 43c1bd63caf437cbea974d14de7d2fb3eeaa7b7b Mon Sep 17 00:00:00 2001 From: Somay Chauhan Date: Mon, 29 Jan 2024 15:33:26 +0530 Subject: [PATCH] fix: destination calendar selection resetting to default on page reload (#13440) * fix: destination calendar selection resetting to default on page reload * fix: duplicate destination calendar settings on duplicate event * fix: zod error in test --------- Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> --- .../event-types/views/event-types-single-view.tsx | 1 + .../routers/viewer/eventTypes/duplicate.handler.ts | 12 ++++++++++++ .../trpc/server/routers/viewer/eventTypes/types.ts | 10 ++++++---- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/apps/web/modules/event-types/views/event-types-single-view.tsx b/apps/web/modules/event-types/views/event-types-single-view.tsx index 23ba6c63fc..77d7d6eb3b 100644 --- a/apps/web/modules/event-types/views/event-types-single-view.tsx +++ b/apps/web/modules/event-types/views/event-types-single-view.tsx @@ -268,6 +268,7 @@ const EventTypePage = (props: EventTypeSetupProps) => { seatsShowAvailabilityCount: eventType.seatsShowAvailabilityCount, lockTimeZoneToggleOnBookingPage: eventType.lockTimeZoneToggleOnBookingPage, locations: eventType.locations || [], + destinationCalendar: eventType.destinationCalendar, recurringEvent: eventType.recurringEvent || null, isInstantEvent: eventType.isInstantEvent, description: eventType.description ?? undefined, diff --git a/packages/trpc/server/routers/viewer/eventTypes/duplicate.handler.ts b/packages/trpc/server/routers/viewer/eventTypes/duplicate.handler.ts index 67ddcc0fc6..250032937b 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/duplicate.handler.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/duplicate.handler.ts @@ -5,6 +5,7 @@ import { prisma } from "@calcom/prisma"; import { TRPCError } from "@trpc/server"; import type { TrpcSessionUser } from "../../../trpc"; +import { setDestinationCalendarHandler } from "../../loggedInViewer/setDestinationCalendar.handler"; import type { TDuplicateInputSchema } from "./duplicate.schema"; type DuplicateOptions = { @@ -34,6 +35,7 @@ export const duplicateHandler = async ({ ctx, input }: DuplicateOptions) => { team: true, workflows: true, webhooks: true, + destinationCalendar: true, }, }); @@ -66,6 +68,7 @@ export const duplicateHandler = async ({ ctx, input }: DuplicateOptions) => { durationLimits, metadata, workflows, + destinationCalendar, // eslint-disable-next-line @typescript-eslint/no-unused-vars id: _id, // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -120,6 +123,15 @@ export const duplicateHandler = async ({ ctx, input }: DuplicateOptions) => { data: relationCreateData, }); } + if (destinationCalendar) { + await setDestinationCalendarHandler({ + ctx, + input: { + ...destinationCalendar, + eventTypeId: newEventType.id, + }, + }); + } return { eventType: newEventType, diff --git a/packages/trpc/server/routers/viewer/eventTypes/types.ts b/packages/trpc/server/routers/viewer/eventTypes/types.ts index 04a6ac0403..fc062670ac 100644 --- a/packages/trpc/server/routers/viewer/eventTypes/types.ts +++ b/packages/trpc/server/routers/viewer/eventTypes/types.ts @@ -9,10 +9,12 @@ export const EventTypeUpdateInput = _EventTypeModel .extend({ isInstantEvent: z.boolean().optional(), customInputs: z.array(customInputSchema).optional(), - destinationCalendar: _DestinationCalendarModel.pick({ - integration: true, - externalId: true, - }), + destinationCalendar: _DestinationCalendarModel + .pick({ + integration: true, + externalId: true, + }) + .nullable(), users: z.array(stringOrNumber).optional(), children: z .array(