From 9f277c517995965e9362b73bdb594bf4c2bdfeae Mon Sep 17 00:00:00 2001 From: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> Date: Wed, 19 Nov 2025 15:54:50 +0530 Subject: [PATCH] fix: archive meeting during host-change reschedules (#25098) --- packages/app-store/hubspot/lib/CrmService.ts | 11 ++++++++++- .../bookings/lib/service/RegularBookingService.ts | 1 + packages/types/Calendar.d.ts | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/app-store/hubspot/lib/CrmService.ts b/packages/app-store/hubspot/lib/CrmService.ts index 4c75cde940..3468d23f7c 100644 --- a/packages/app-store/hubspot/lib/CrmService.ts +++ b/packages/app-store/hubspot/lib/CrmService.ts @@ -123,6 +123,10 @@ export default class HubspotCalendarService implements CRM { return this.hubspotClient.crm.objects.meetings.basicApi.update(uid, simplePublicObjectInput); }; + private hubspotArchiveMeeting = async (uid: string) => { + return this.hubspotClient.crm.objects.meetings.basicApi.archive(uid); + }; + private hubspotAuth = async (credential: CredentialPayload) => { const appKeys = await getAppKeysFromSlug("hubspot"); if (typeof appKeys.client_id === "string") this.client_id = appKeys.client_id; @@ -212,9 +216,14 @@ export default class HubspotCalendarService implements CRM { return await this.hubspotUpdateMeeting(uid, event); } - async deleteEvent(uid: string): Promise { + async deleteEvent(uid: string, event: CalendarEvent): Promise { const auth = await this.auth; await auth.getToken(); + + if (event?.hasOrganizerChanged) { + await this.hubspotArchiveMeeting(uid); + return; + } await this.hubspotCancelMeeting(uid); } diff --git a/packages/features/bookings/lib/service/RegularBookingService.ts b/packages/features/bookings/lib/service/RegularBookingService.ts index f1f4844ebf..95cf13acdf 100644 --- a/packages/features/bookings/lib/service/RegularBookingService.ts +++ b/packages/features/bookings/lib/service/RegularBookingService.ts @@ -1884,6 +1884,7 @@ async function handler( evt.videoCallData = undefined; // To prevent "The requested identifier already exists" error while updating event, we need to remove iCalUID evt.iCalUID = undefined; + evt.hasOrganizerChanged = true; } if (changedOrganizer && originalRescheduledBooking?.user) { diff --git a/packages/types/Calendar.d.ts b/packages/types/Calendar.d.ts index 2b7d9eda65..22e67ce546 100644 --- a/packages/types/Calendar.d.ts +++ b/packages/types/Calendar.d.ts @@ -222,6 +222,7 @@ export interface CalendarEvent { domainWideDelegationCredentialId?: string | null; customReplyToEmail?: string | null; rescheduledBy?: string; + hasOrganizerChanged?: boolean; } export interface EntryPoint {