diff --git a/apps/meteor/app/api/server/v1/calendar.ts b/apps/meteor/app/api/server/v1/calendar.ts index 943967b3ad426..5eff639a80f5e 100644 --- a/apps/meteor/app/api/server/v1/calendar.ts +++ b/apps/meteor/app/api/server/v1/calendar.ts @@ -50,17 +50,18 @@ API.v1.addRoute( { async post() { const { userId: uid } = this; - const { startTime, endTime, externalId, subject, description, meetingUrl, reminderMinutesBeforeStart } = this.bodyParams; + const { startTime, endTime, externalId, subject, description, meetingUrl, reminderMinutesBeforeStart, busy } = this.bodyParams; const id = await Calendar.create({ uid, startTime: new Date(startTime), - ...(endTime ? { endTime: new Date(endTime) } : {}), + ...(endTime && { endTime: new Date(endTime) }), externalId, subject, description, meetingUrl, reminderMinutesBeforeStart, + ...(typeof busy === 'boolean' && { busy }), }); return API.v1.success({ id }); @@ -74,16 +75,18 @@ API.v1.addRoute( { async post() { const { userId: uid } = this; - const { startTime, externalId, subject, description, meetingUrl, reminderMinutesBeforeStart } = this.bodyParams; + const { startTime, endTime, externalId, subject, description, meetingUrl, reminderMinutesBeforeStart, busy } = this.bodyParams; const id = await Calendar.import({ uid, startTime: new Date(startTime), + ...(endTime && { endTime: new Date(endTime) }), externalId, subject, description, meetingUrl, reminderMinutesBeforeStart, + ...(typeof busy === 'boolean' && { busy }), }); return API.v1.success({ id }); @@ -97,7 +100,7 @@ API.v1.addRoute( { async post() { const { userId } = this; - const { eventId, startTime, subject, description, meetingUrl, reminderMinutesBeforeStart } = this.bodyParams; + const { eventId, startTime, endTime, subject, description, meetingUrl, reminderMinutesBeforeStart, busy } = this.bodyParams; const event = await Calendar.get(eventId); @@ -107,10 +110,12 @@ API.v1.addRoute( await Calendar.update(eventId, { startTime: new Date(startTime), + ...(endTime && { endTime: new Date(endTime) }), subject, description, meetingUrl, reminderMinutesBeforeStart, + ...(typeof busy === 'boolean' && { busy }), }); return API.v1.success(); diff --git a/apps/meteor/server/services/calendar/service.ts b/apps/meteor/server/services/calendar/service.ts index e96956e4f9462..b37b2adc45b09 100644 --- a/apps/meteor/server/services/calendar/service.ts +++ b/apps/meteor/server/services/calendar/service.ts @@ -317,7 +317,7 @@ export class CalendarService extends ServiceClassInternal implements ICalendarSe // 1. The current status is BUSY (meaning it was set by our system, not manually changed by user) // 2. We have a previousStatus stored from before the event started - if (event.previousStatus && event.previousStatus === user.status) { + if (user.status === UserStatus.BUSY && event.previousStatus && event.previousStatus !== user.status) { await applyStatusChange({ eventId: event._id, uid: event.uid,