From 9c94aadbf7af7042f99a387f4993d2306f2a95c5 Mon Sep 17 00:00:00 2001 From: Philip Niedertscheider Date: Thu, 13 Jan 2022 20:47:15 +0100 Subject: [PATCH] Fixed Google Calendar custom destination calendar deletion (#1486) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Peer Richelsen Co-authored-by: Omar López Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- lib/integrations/calendar/CalendarManager.ts | 4 ++-- lib/integrations/calendar/interfaces/Calendar.ts | 2 +- lib/integrations/calendar/services/GoogleCalendarService.ts | 6 ++++-- pages/api/cancel.ts | 4 +++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/integrations/calendar/CalendarManager.ts b/lib/integrations/calendar/CalendarManager.ts index 961b9cfc..7f24ae8d 100644 --- a/lib/integrations/calendar/CalendarManager.ts +++ b/lib/integrations/calendar/CalendarManager.ts @@ -170,10 +170,10 @@ export const updateEvent = async ( }; }; -export const deleteEvent = (credential: Credential, uid: string): Promise => { +export const deleteEvent = (credential: Credential, uid: string, event: CalendarEvent): Promise => { const calendar = getCalendar(credential); if (calendar) { - return calendar.deleteEvent(uid); + return calendar.deleteEvent(uid, event); } return Promise.resolve({}); diff --git a/lib/integrations/calendar/interfaces/Calendar.ts b/lib/integrations/calendar/interfaces/Calendar.ts index f9358e6a..fe6284c3 100644 --- a/lib/integrations/calendar/interfaces/Calendar.ts +++ b/lib/integrations/calendar/interfaces/Calendar.ts @@ -66,7 +66,7 @@ export interface Calendar { updateEvent(uid: string, event: CalendarEvent): Promise; - deleteEvent(uid: string): Promise; + deleteEvent(uid: string, event: CalendarEvent): Promise; getAvailability( dateFrom: string, diff --git a/lib/integrations/calendar/services/GoogleCalendarService.ts b/lib/integrations/calendar/services/GoogleCalendarService.ts index 55f68dc9..9eb2b96a 100644 --- a/lib/integrations/calendar/services/GoogleCalendarService.ts +++ b/lib/integrations/calendar/services/GoogleCalendarService.ts @@ -185,7 +185,7 @@ export default class GoogleCalendarService implements Calendar { ); } - async deleteEvent(uid: string): Promise { + async deleteEvent(uid: string, event: CalendarEvent): Promise { return new Promise((resolve, reject) => this.auth.getToken().then((myGoogleAuth) => { const calendar = google.calendar({ @@ -195,7 +195,9 @@ export default class GoogleCalendarService implements Calendar { calendar.events.delete( { auth: myGoogleAuth, - calendarId: "primary", + calendarId: event.destinationCalendar?.externalId + ? event.destinationCalendar.externalId + : "primary", eventId: uid, sendNotifications: true, sendUpdates: "all", diff --git a/pages/api/cancel.ts b/pages/api/cancel.ts index a12a24bf..9c660678 100644 --- a/pages/api/cancel.ts +++ b/pages/api/cancel.ts @@ -40,6 +40,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) email: true, timeZone: true, name: true, + destinationCalendar: true, }, }, attendees: true, @@ -105,6 +106,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) uid: bookingToDelete?.uid, location: bookingToDelete?.location, language: t, + destinationCalendar: bookingToDelete?.user.destinationCalendar, }; // Hook up the webhook logic here @@ -141,7 +143,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) if (credential.type.endsWith("_calendar")) { const calendar = getCalendar(credential); - return calendar?.deleteEvent(bookingRefUid); + return calendar?.deleteEvent(bookingRefUid, evt); } else if (credential.type.endsWith("_video")) { return deleteMeeting(credential, bookingRefUid); }